![source 命令在 shell 脚本中不起作用](https://linux22.com/image/196197/source%20%E5%91%BD%E4%BB%A4%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我对脚本语言确实很陌生。
我必须source ~/.custom_rc
从 shell 脚本中运行命令。当我运行 shell 脚本时,它没有显示任何错误。它运行得很好。
这是我的install.sh
文件。
#!/usr/bin/env bash
#
# Some Comments
#
# End of Comments
echo ""
.
.
.
.
.
.
source ~/.custom_rc
echo "End Of Script..."
我正在使用curl 执行脚本sh -c
,
sh -c "$(curl -fsSL https://some.link/to/install.sh)"
为什么命令不在脚本内运行?我该如何让它们在 shell 脚本内运行?
编辑#1:
我在文件中使用别名命令.custom_rc
。
执行完成后,我无法使用别名命令。
但是,当我手动运行时source ~/.custom_rc
,别名命令工作正常。
答案1
好吧......我明白发生了什么事。如果您希望能够使用中定义的别名.custom_rc
后 sh
执行完毕,那么这将不起作用,因为别名是在sh
会话中设置的。sh
完成后他们将随之死去。换句话说,您应该能够使用别名,从运行source
到install.sh
.
您需要另一个处理此问题的脚本的帮助:
包装器.sh:
curl https://some.link/to/install.sh # download the script so you can source it
. install.sh # source it
(或类似的东西)
然后,您应该能够运行. wrapper.sh
并且它应该可以工作(注意您也是如何获取这个的)。
更新
关于它不起作用的评论:
$ cat script1.sh
alias alias1="echo hola"
. script2.sh
$ cat script2.sh
alias alias2="echo adios"
$ ./script1.sh
$ alias1
bash: alias1: command not found
$ alias2
bash: alias2: command not found
$ . script1.sh
$ alias1
hola
$ alias2
adios