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

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)


BAN*_*OSA 8

采购你.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 描述)。