脚本执行命令实例详解

使用linux不免要用到执行脚本,比如一个文件a.sh,我们有时会见到用. a.sh去执行,有时见到用sh a.sh去执行,或者bash a.sh,或者source a.sh,那么这两种执行脚本的方式有什么区别呢?这个问题也困惑了本人很久,今天总结一下:
首先考虑这样子一种情况:
我的作用文件有时候路径比较长,为什么不创建一个脚本放在初始路径下,这样运行一下直接到到位,于是有了下面的welcome.sh,内容为:

#!/bin/bash
echo "cd /opt/jskp/jinjiwei"
cd /opt/jskp/jinjiwei

其中#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 echo 命令用于向窗口输出文本。

保存到根目录下,执行
1、. welcome.sh方法执行:
这里写图片描述
如图可见,两条语句都被执行,第一条执行输出第二条命令,第二条命令执行进入对应目录。
2、source welcome.sh方法执行:
这里写图片描述
3、bash welcome.sh方法执行:
这里写图片描述
4、sh welcome.sh方法执行:
这里写图片描述
可以看出,.或source对于脚本中的语句可以全部执行,但是sh或bash只能执行第一条语句,而且不管有没有解释器信息结果都是一样的哦,很奇怪的现象,现象解释:

这样执行的话终端会产生一个子shell(类似于C语言调用函数),子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回。回到终端根本就看不到这个过程的变化。引用文档

这种情况下可以使用.或source方法解决哦,因为.或source与加载资源类似,把脚本当作程序加载运行。


所以推荐使用. a.shsource a.sh执行脚本哦。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值