我需要一个 Bash 别名的 A 替代品(其行为基本上类似于别名,但不是别名)。
我需要这样的替代品的原因是因为脚本无法使用别名。也就是说,当我在 Bash 中手动执行别名时,它可以正常工作,但作为脚本的一部分运行时,它就无法工作。我知道的解决方案是将别名放入临时文件中,但我不想要这种方法。
是否有任何替代/类似的命令快捷方式我可以利用,一些“下一代别名”(给出一个比喻),其行为就像别名一样,但也可以自然地供脚本访问(在获取其文件之后)?
答案1
在man bash
:
当 shell 非交互式时,别名不会扩展,除非扩展别名shell 选项设置使用肖普特。
所以,我认为你需要添加shopt expand_aliases
到你的bash
脚本中。
测试:
$ cat 1.sh
#!/bin/bash
alias ll='ls -l'
ll $HOME
$ ./1.sh
./1.sh: line 3: ll: command not found
$ cat 2.sh
#!/bin/bash
shopt -s expand_aliases
alias ll='ls -l'
ll $HOME
$ ./2.sh
total 12
...