bash - eval 不能在文件中使用别名
问题描述
我试图理解为什么eval
在文件和 cli 中对别名的处理方式不同。当我要求eval
在程序中使用带有别名的命令时,它找不到它。在cli上它没有问题。alias 还表明 bash 环境知道别名。
测试.sh
alias ECHO='echo'
cmd="ECHO dog"
alias
eval $cmd
eval "ECHO dog"
执行
$ bash test.sh
alias ECHO='echo'
test.sh: line 4: ECHO: command not found
test.sh: line 5: ECHO: command not found
$ alias ECHO='echo'
$ alias
alias ECHO='echo'
$ cmd="ECHO dog"
$ eval $cmd
dog
$ eval "ECHO dog"
dog