source 加要执行的shell script文件名, shell script文件名直接运行于./shell script 的区别

下面的内容基于Linux bash环境

在unix中运行shell脚本的方式有很多种,假设有一个可以运行的脚本叫test.sh,可以通过source加脚本文件名,source test.sh(= . ./test.sh 两个.), 也可以通过./路径/test.sh方式运行,如果脚本在PATH路径下,还可以字节通过脚本名运行,如test.sh。

它们之间的区别是:

source test.sh的方式让test.sh在当前的shell 进程中运行,不启动子shell.

./test.sh(只有一个点) 和test.sh(test.sh必须在PATH路径中)会启动子shell运行。

另外,当把一个shell脚本放在PATH中的时候,尤其是没有sh后缀名的时候,如果系统中有alias,function和这个shell脚本重名的话,alias和function的优先级更高。

如,系统有一个alias: alias ft="echo ft is an alias"

同时还有一个function 也叫ft(){echo ft is a function}

然后在PATH路径(比如说当前路径目录也被设为PATH)中也有一个ft脚本文件,内容是echo ft is in a script

如果在shell里运行ft,会执行alias,如果将alias去掉,unalias ft,会执行function,如果想执行脚本ft,可以通过./ft

当运行脚本不是你期望的结果的时候,可以通过type 脚本名 看看是不是还有同名的alias,function,通过type -all ft 可以列出所有的ft的定义。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值