社区
系统维护与使用区
帖子详情
linux在脚本执行命令和直接在命令行执行命令有什么区别
daiguoliangfirst
2010-09-21 08:02:50
备注:如果涉及到shell,请局限在bash
主要想知道最大的区别在哪里
...全文
2219
20
打赏
收藏
linux在脚本执行命令和直接在命令行执行命令有什么区别
备注:如果涉及到shell,请局限在bash 主要想知道最大的区别在哪里
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
daiguoliangfirst
2010-09-24
打赏
举报
回复
可以不可以这样理解呢?在bash shell下面运行bash命令,这个bash的父进程本身就是一个bash,因此各种环境变量会继承下来,但是如果在命令行里面运行的话,bash命令的父进程是执行脚本的进程,因此各种环境变量不会被继承下来.
能这样理解吗?子进程在创建的时候是复制父进程的"空间",按理来讲不可能继承这些环境变量,否则安全性就会有问题.
敢问一下该如何理解这个问题呢?
daiguoliangfirst
2010-09-24
打赏
举报
回复
那根据楼上各位的陈述,再此基础上问一个问题,在bash shell下面运行bash命令,然后再运行其他命令,比如ls,结果是可以正常的显示,但是如果将`bash`命令放到脚本里面,执行脚本之后,为什么运行其他命令比如ls都不会正常显示?
steptodream
2010-09-24
打赏
举报
回复
按理来讲不可能继承这些环境变量,否则安全性就会有问题一个脚本,如果执行的时候就得到父亲的环境变量,在脚本里不就存在被调出来引用的危险吗?
-------------------------
具体什么危险 你举个例子说说呀 难道你会把root密码设成一个环境变量。
要是那样的话 你每个脚本里都要再自己设置一遍常用变量(比如PWD LANG PATH等) 你不嫌麻烦吗?
普遍常用的环境变量一般都是设在/etc/profile和/etc/profile.d/下的文件里 对所有用户有效 所有用户的脚本里都可以使用它们
如果涉及到一些隐私或者自己的环境变量 一般设置~/.bash_profile里
justkk
2010-09-24
打赏
举报
回复
[Quote=引用 11 楼 daiguoliangfirst 的回复:]
那根据楼上各位的陈述,再此基础上问一个问题,在bash shell下面运行bash命令,然后再运行其他命令,比如ls,结果是可以正常的显示,但是如果将`bash`命令放到脚本里面,执行脚本之后,为什么运行其他命令比如ls都不会正常显示?
[/Quote]
那是因为,脚本中执行的bash还没有退出来..
你试试在显示的命令行提示符后面手工执行exit看看.. 这时脚本中后面的命令才得以执行..
masmaster
2010-09-24
打赏
举报
回复
没区别
daiguoliangfirst
2010-09-24
打赏
举报
回复
脚本前面已经加了#!/bin/xxxx 一句就是指定用xxxx的shell环境来执行脚本 你还在脚本里单独写一句bash命令干什么?
只是想做试验,看看这样的执行效果,然后知道下根本原因
按理来讲不可能继承这些环境变量,否则安全性就会有问题
一个脚本,如果执行的时候就得到父亲的环境变量,在脚本里不就存在被调出来引用的危险吗?
Wenxy1
2010-09-24
打赏
举报
回复
我认为没有区别。
steptodream
2010-09-24
打赏
举报
回复
[Quote=引用 11 楼 daiguoliangfirst 的回复:]
那根据楼上各位的陈述,再此基础上问一个问题,在bash shell下面运行bash命令,然后再运行其他命令,比如ls,结果是可以正常的显示,但是如果将`bash`命令放到脚本里面,执行脚本之后,为什么运行其他命令比如ls都不会正常显示?
[/Quote]
脚本前面已经加了#!/bin/xxxx 一句就是指定用xxxx的shell环境来执行脚本 你还在脚本里单独写一句bash命令干什么?
按理来讲不可能继承这些环境变量,否则安全性就会有问题.
-------------------------------
shell环境里 有什么安全问题 请告诉我一下
按你说的 就单一一个命令 在我所知道的命令里 在命令行执行 还是在脚本里执行都没啥区别
就是涉及到环境变量的source和.命令 有非常明显的区别
在命令行里source file或者. file 之后file里的环境变量就生效了
在脚本里source file或者. file 之后 file里的环境变量只在这个脚本里有效 脚本结束了 环境变量也就消失了
daiguoliangfirst
2010-09-24
打赏
举报
回复
[Quote=引用 19 楼 steptodream 的回复:]
按理来讲不可能继承这些环境变量,否则安全性就会有问题一个脚本,如果执行的时候就得到父亲的环境变量,在脚本里不就存在被调出来引用的危险吗?
-------------------------
具体什么危险 你举个例子说说呀 难道你会把root密码设成一个环境变量。
要是那样的话 你每个脚本里都要再自己设置一遍常用变量(比如PWD LANG PATH等) 你不嫌麻烦吗?
普遍常用的环境……
[/Quote]
姑且不讨论这个问题,我提的问题的重点在第一个问题
mypwb
2010-09-24
打赏
举报
回复
如果需要重复执行一些操作的话,脚本比命令方便多了
一品川
2010-09-23
打赏
举报
回复
[Quote=引用 8 楼 steptodream 的回复:]
Shell脚本与Windows/Dos下的批处理相似 但是它比Windows下的批处理更强大 单独执行每个命令都有每个命令自己的作用 而脚本就是把各种命令按shell的语法组织起来(管道,正则,循环,条件以及逻辑判断等等) 方便一次性执行的一个程序文件 主要是方便管理员进行设置或者管理用
[/Quote]ding
louyong0571
2010-09-23
打赏
举报
回复
shell已经有过程有逻辑了,命令行还仅仅是单一的操作吧。
steptodream
2010-09-21
打赏
举报
回复
Shell脚本与Windows/Dos下的批处理相似 但是它比Windows下的批处理更强大 单独执行每个命令都有每个命令自己的作用 而脚本就是把各种命令按shell的语法组织起来(管道,正则,循环,条件以及逻辑判断等等) 方便一次性执行的一个程序文件 主要是方便管理员进行设置或者管理用
leafsoar
2010-09-21
打赏
举报
回复
[Quote=引用 4 楼 steptodream 的回复:]
引用 2 楼 kltwjt 的回复:
最大的区别可能
就是shell你想执行几遍就几遍,还很方便
命令就比较烦了
这个也是哈
我们经常需要做一件事 都是重复的命令 你要每次都用手敲 就太没效率
写成脚本 执行一下 所有操作都搞定
[/Quote]
就是就是
还有可以把脚本放到,开机关机中执行特殊的任务。这就不是bash能做的了吧
freetstar
2010-09-21
打赏
举报
回复
当然shell脚本的好处就在于可以把重复之行的命令放在一个文件里,多好
freetstar
2010-09-21
打赏
举报
回复
[Quote=引用 1 楼 steptodream 的回复:]
直接在命令行执行 就是在当前的shell环境下执行 比如涉及到一些环境变量的时候 必须在当前shell环境里执行
在脚本里执行的话 脚本执行的时候 会fork一个子进程 所有操作都在子进程进行 如果涉及到一些在脚本里设置环境变量的东西 脚本结束了 环境变量也就消失了
这是我看到最大的区别了 很多人设置环境变量不成功原因就在这里 别的想不到啥了
[/Quote]
环境变量是一个大区别了
steptodream
2010-09-21
打赏
举报
回复
[Quote=引用 2 楼 kltwjt 的回复:]
最大的区别可能
就是shell你想执行几遍就几遍,还很方便
命令就比较烦了
[/Quote]
这个也是哈
我们经常需要做一件事 都是重复的命令 你要每次都用手敲 就太没效率
写成脚本 执行一下 所有操作都搞定
steptodream
2010-09-21
打赏
举报
回复
读一下这个http://hi.baidu.com/honstdw/blog/item/5a32101bee15481c8618bf0f.html
leafsoar
2010-09-21
打赏
举报
回复
最大的区别可能
就是shell你想执行几遍就几遍,还很方便
命令就比较烦了
steptodream
2010-09-21
打赏
举报
回复
直接在命令行执行 就是在当前的shell环境下执行 比如涉及到一些环境变量的时候 必须在当前shell环境里执行
在脚本里执行的话 脚本执行的时候 会fork一个子进程 所有操作都在子进程进行 如果涉及到一些在脚本里设置环境变量的东西 脚本结束了 环境变量也就消失了
这是我看到最大的区别了 很多人设置环境变量不成功原因就在这里 别的想不到啥了
linux
脚本
执行完命令后不会退出
命令行
界面
在
Linux
中运行
脚本
时,可以遇到一种情况,即
脚本
执行完命令后不会退出,而是继续停留在
命令行
界面。
linux
中利用shell
脚本
条件执行
linux
命令
linux
中利用shell
脚本
条件
执行命令
在
linux
环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些
脚本
然后根据我们的选择自动
执行命令
,那岂不是完美,本
脚本
就是为此而生的(以跳转不同的目录举例,当然也可以执行其他命令,这时候只需要类比写shell命令即可) 1、首先建一个shell
脚本
start.sh ...
Linux
执行
脚本
有多种方式
通过
命令行
进入到
脚本
文件所在的目录,然后
直接
输入
脚本
名字并回车即可。另外,在执行
脚本
时,还可以使用`source`命令或者`.`来执行
脚本
。这两种方式可以让
脚本
中的变量、函数等在当前shell中生效。需要注意的是,如果
脚本
在Windows下编辑,可能会遇到换行符的问题,需要使用类Unix换行符(`\n`)。以上是
Linux
中几种常用的执行
脚本
方式,根据实际需要选择合适的方式执行
脚本
。2. 使用bash命令来执行
脚本
。3. 使用sh命令来执行
脚本
。下面列举常用的几种方法。1.
直接
执行
脚本
文件。
Linux
命令行
界面编程 - 创建和执行
脚本
脚本
是包含一系列命令的文本文件,可以在
命令行
中执行。下面我们将以Bash
脚本
为例,演示如何创建和执行
脚本
。在
Linux
操作系统中,
命令行
界面(CLI)是一种强大的工具,可以通过编写
脚本
来自动化任务和批处理操作。本文将介绍如何创建和执行
脚本
,以及一些常见的
命令行
编程技巧。通过
命令行
界面编程,可以创建和执行
脚本
来自动化任务和批处理操作。本文介绍了如何创建和执行Bash
脚本
,以及一些常见的
命令行
编程技巧,如传递参数、循环和条件语句。
脚本
还可以接受
命令行
参数,以便根据不同的输入执行不同的操作。
linux
直接
执行php,在
linux
命令行
中
直接
执行php命令
mysql中如何在
命令行
中,执行一个SQL
脚本
文件?需求描述: 在mysql数据库的使用中,有的时候,需要
直接
在shell的
命令行
中,执行某个SQL
脚本
文件, 比如,要初始化数据库,创建特定的存储过程,创建表等操作,这里进行一个基本的测试. 一般情况, ...mysq在
命令行
模式下执行shell命令mysql可以在
命令行
模式下执行shell命令 mysql> help For informa...
系统维护与使用区
19,620
社区成员
74,588
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章