是否可以定义默认情况下以交互方式运行的 bash 脚本?

是否可以定义默认情况下以交互方式运行的 bash 脚本?

我编写了一些脚本并将它们存储在我的~/bin文件夹中。我已经能够通过在 shell 会话期间调用它们的标题来运行它们。但是,它们不是交互式运行(我的意思是,我的~/.bashrc别名没有加载)。

有没有办法将它们标记为默认交互式运行?或者我必须source ~/.bashrc在它们内部使用那里定义的任何别名?

欢迎其他替代方案!

答案1

如果您将该-i选项添加到 hashbang(s) 中,它将指定脚本以交互模式运行。

#!/bin/bash -i

或者,您可以使用该选项调用脚本:

bash -i /path/to/script.sh

答案2

采购你的产品.bashrc并不是一个好主意。您可以.bash_alias使用别名创建一个文件,然后在脚本中获取该文件并使用shopt

就像是:

shopt -s expand_aliases
source ~/.bash_alias

Bash 手册页指出:

当 shell 非交互式时,别名不会扩展,除非使用 shopt 设置 Expand_aliases shell 选项(请参阅下面的 SHELL BUILTIN COMMANDS 下的 shopt 描述)。

相关内容