使用curl
如:
bash <(curl -s https://raw.githubusercontent.com/user/repo/master/script.sh | tr -d '\r')
我执行了一些远程脚本。
远程脚本包括以下两个方面:
1)命令:
wget -P ~/myAddons/ https://raw.githubusercontent.com/user/repo/master/appendix.sh
2)一个source ~/myAddons/appendix.sh
命令:
该文件appendix.sh
包含一些 Bash 别名。
问题
执行远程脚本后,我尝试使用appendix.sh
.没有一个起作用。
只有在手动执行后source ~/myAddons/appendix.sh
,别名才起作用。
- 我检查了至少 3 次,远程脚本的
source
命令和手动命令是否相同。
问题
为什么直接从远程脚本执行会source ~/myAddons/appendix.sh
失败,而手动执行却可以,解决这个问题的正确方法是什么?
答案1
您正在开始一个新的外壳,bash <(...)
然后在其中进行采购。这不会影响您运行的原始 shell bash <(...)
。您应该source
改为进程替换:
source <(...)
# or
. <(...)