我的操作系统是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
)并不是一种选择。
答案 0 :(得分:0)
Alias。当您使用bash -c '...'
启动shell时,它不是交互式的。
改为使用函数:bash -c 'foo() { echo bar; } && foo'
可以正常工作。