This question already has answers here:
Alias doesn't work inside a Bash script
(2个答案)
去年关闭。
我的操作系统是Ubuntu Linux 18.04(Xubuntu)和bash版本4.4.19
通过输入以下shell命令:
我得到以下输出:
我问的原因是因为我有一个复杂的脚本,该脚本使用别名,因此希望以
我试过了:
但是,使用自己的别名时脚本将失败。不幸的是,在我想要的情况下,切换到root(
(2个答案)
去年关闭。
我的操作系统是Ubuntu Linux 18.04(Xubuntu)和bash版本4.4.19
通过输入以下shell命令:
bash -c 'foo="echo bar" && $foo'
bash -c 'alias foo="echo bar" && foo'
alias foo="echo bar" && foo
我得到以下输出:
bar
(预期)bash: foo: command not found
(应该使用简单的bar
)bar
(预期)我问的原因是因为我有一个复杂的脚本,该脚本使用别名,因此希望以
root
的身份执行。我试过了:
sudo bash -c '/path/to/script.sh'
但是,使用自己的别名时脚本将失败。不幸的是,在我想要的情况下,切换到root(
sudo -i
)并不是一种选择。 最佳答案
默认情况下,仅在交互式Shell中启用别名。使用bash -c '...'
启动shell时,它不是交互式的。
改用函数:bash -c 'foo() { echo bar; } && foo'
完美工作。