linux在脚本执行命令和直接在命令行执行命令有什么区别

daiguoliangfirst 2010-09-21 08:02:50
备注:如果涉及到shell,请局限在bash

主要想知道最大的区别在哪里
...全文
2158 20 打赏 收藏 转发到动态 举报
写回复
用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一个子进程 所有操作都在子进程进行 如果涉及到一些在脚本里设置环境变量的东西 脚本结束了 环境变量也就消失了

这是我看到最大的区别了 很多人设置环境变量不成功原因就在这里 别的想不到啥了

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧