source 命令在 shell 脚本中不起作用

source 命令在 shell 脚本中不起作用

我对脚本语言确实很陌生。

我必须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完成后他们将随之死去。换句话说,您应该能够使用别名,从运行sourceinstall.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

相关内容