社区
系统维护与使用区
帖子详情
linux在脚本执行命令和直接在命令行执行命令有什么区别
daiguoliangfirst
2010-09-21 08:02:50
备注:如果涉及到shell,请局限在bash
主要想知道最大的区别在哪里
...全文
2281
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一个子进程 所有操作都在子进程进行 如果涉及到一些在脚本里设置环境变量的东西 脚本结束了 环境变量也就消失了
这是我看到最大的区别了 很多人设置环境变量不成功原因就在这里 别的想不到啥了
shell
脚本
语言与
linux
命令的联系与
区别
使用
linux
肯定是要会使用命令的,就算提供有用户界面,绝大部分功能还是要通过
命令行
去操作的。而shell
脚本
语言也是运行在
linux
上的
脚本
语言,对于服务器运维人员也是几乎必须要掌握的。而shell
脚本
语言和
linux
命令有什么联系,有什么
区别
,也是要弄清楚的。 什么是shell,shell与
linux
命令的联系 shell翻译成壳的意思,它是包裹在
linux
内核外层的、一个可通过...
shell和python命令一样吗_
Linux
命令行
与shell的
区别
这个问题也是突然想起来的,因为我身边的同事有时候会把这两个
区别
的表述,所以我就好奇了,到底是什么关系呢,他们都能操作
Linux
系统啊。。后来百度一下才知道大致的
区别
。一、什么是shell答:shell翻译成壳的意思,它是包裹在
linux
内核外层的,一个可通过一系列的
linux
命令对操作系统发出相关指令的人机界面。 shell可以通过其条件语句和循环语句等,把一系列
linux
命令结合在一起,形成一个...
Linux
命令行
与shell的
区别
这个问题也是突然想起来的,因为我身边的同事有时候会把这两个
区别
的表述,所以我就好奇了,到底是什么关系呢,他们都能操作
Linux
系统啊。。后来百度一下才知道大致的
区别
。一、什么是shell答: shell翻译成壳的意思,它是包裹在
linux
内核外层的,一个可通过一系列的
linux
命令对操作系统发出相关指令的人机界面。 shell可以通过其条件语句和循环语句等,把一系列linu...
linux
命令行
和
linux
编程
区别
,
Linux
命令行
和Shell
脚本
编程(一)
一、
Linux
命令行
1.1 常用命令echo -n "hello" #不换行echo -e "hello\nworld"head -n2 data.txttail -n2 data.txtping 127.0.0.1 > ping.log & #置于后台运行jobs #查看后台作业fg #移置前台运行which command #查看可执行文件的位置find . -name "*.c...
linux
的
命令行
操作和shell的
区别
这个问题也是突然想起来的,因为我身边的同事有时候会把这两个
区别
的表述,所以我就好奇了,到底是什么关系呢,他们都能操作
Linux
系统啊。。后来百度一下才知道大致的
区别
。一、什么是shell答: shell翻译成壳的意思,它是包裹在
linux
内核外层的,一个可通过一系列的
linux
命令对操作系统发出相关指令的人机界面。 shell可以通过其条件语句和循环语句等,把一系列
linux
命令结合在
系统维护与使用区
19,615
社区成员
74,556
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章