linux下source sh ./ 执行脚本区别

命令执行用途文件要求执行过程脚本解释器
sourcesource a.sh通常针对配置文件,执行source使生效,如.bashrc中export变量,则source .bashrc之后,当前terminal中可以使用该变量针对 a.sh, 当前用户不需要执行权限当前shell内执行,a.sh中对变量的修改,影响当前terminal中变量
shsh a.sh通常用户执行shell脚本针对 a.sh, 当前用户不需要有执行权限打开一个subshell运行,使用变量与当前terminal一致,a.sh中对变量的修改,不会影响当前terminal中变量sh表示脚本默认使用sh脚本解释器
././a.sh通常用户执行脚本,不仅仅shell脚本,python脚本等也可以针对 a.sh, 当前用户有执行权限, chmod修改打开一个subshell运行,使用变量与当前terminal一致,a.sh中对变量的修改,不会影响当前terminal中变量根据脚本第一行#!/bin/bash 表明使用哪种解释器,可以是shell,可以是python

ps:
修改.bashrc后,生效方法:

  • 执行了source .bashrc
  • 重新打开一个terminal就会生效。因为重新打开一个终端,会加载.bashrc文件

为什么sh a.sh不可以运行,./a.sh可以运行
a.sh 脚本如下:

#!/bin/bash
source ~/2.sh

sh a.sh报错:source: not found
因为sh a.sh使用的是sh解释器,是dash的,是不支持source的,bash才支持source

# ls -l `which sh`
lrwxrwxrwx 1 root root 4 8月  31  2018 /bin/sh -> dash

为了使sh支持bash,解决方法:
1、先删除 /bin/sh 的软连接

# rm -r /bin/sh

2、重新映射 /bin/sh

# ln -s /bin/bash /bin/sh

参考
https://www.cnblogs.com/pcat/p/5467188.html
https://www.zhihu.com/question/41441630
https://blog.csdn.net/stpeace/article/details/45567977
http://blog.chinaunix.net/uid-28458801-id-4537781.html?_t=t

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值