社区
系统维护与使用区
帖子详情
linux在脚本执行命令和直接在命令行执行命令有什么区别
daiguoliangfirst
2010-09-21 08:02:50
备注:如果涉及到shell,请局限在bash
主要想知道最大的区别在哪里
...全文
2158
20
打赏
收藏
linux在脚本执行命令和直接在命令行执行命令有什么区别
备注:如果涉及到shell,请局限在bash 主要想知道最大的区别在哪里
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
下执行shell命令方法简介
主要就是在
命令行
中通过交互方式方式
直接
输入shell命令,
命令行
直接
执行给出结果.比如这样: 2.在当前shell中产生一个subshell,在subshell中执行shell命令 比如我们把shell写成shell
脚本
的方式来运行,这个时候会...
《文件和目录操作命令》<
Linux
核心命令系列Series> <2.>
=================================== 本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的
Linux
架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,...
Linux
执行
脚本
有多种方式
通过
命令行
进入到
脚本
文件所在的目录,然后
直接
输入
脚本
名字并回车即可。另外,在执行
脚本
时,还可以使用`source`命令或者`.`来执行
脚本
。这两种方式可以让
脚本
中的变量、函数等在当前shell中生效。需要注意的是,...
linux
中利用shell
脚本
条件执行
linux
命令
在
linux
环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些
脚本
然后根据我们的选择自动
执行命令
,那岂不是完美,本
脚本
就是为此...
系统维护与使用区
19,612
社区成员
74,603
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章