art*_*nrq 6 scripting bash shell-script interactive
我已经编写了一些脚本并将它们存储在我的~/bin文件夹中。我已经能够通过在 shell 会话期间调用它们的标题来运行它们。但是,它们不是交互式运行的(我的意思是,我的~/.bashrc别名没有加载)。
有没有办法将它们标记为默认以交互方式运行?或者我必须source ~/.bashrc在它们内部使用定义的任何别名?
欢迎其他替代品!
jes*_*e_b 11
如果您将该-i选项添加到 hashbang(s) 中,它将指定脚本以交互模式运行。
#!/bin/bash -i
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用该选项调用脚本:
bash -i /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
采购你.bashrc的不是一个好主意。您可以.bash_alias使用别名创建一个文件,然后在脚本中提供该文件并使用shopt
就像是:
shopt -s expand_aliases
source ~/.bash_alias
Run Code Online (Sandbox Code Playgroud)
Bash 手册页指出:
当 shell 不是交互式时,别名不会扩展,除非使用 shopt 设置 expand_aliases shell 选项(请参阅下面的 SHELL BUILTIN COMMANDS 下的 shopt 描述)。