Bash 别名的替代品(其行为基本上类似于别名,但不是别名)

Bash 别名的替代品(其行为基本上类似于别名,但不是别名)

我需要一个 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
...

相关内容