在Linux系统上定义别名非常简单。
从下面的示例中我们可以看到:I_am_only_ls_aliasalias命令将输出作为ls命令

 # alias I_am_only_ls_alias=ls
 # I_am_only_ls_alias

输出:
file   file1

但是当我尝试在bash脚本中执行同样的操作时(define alias I_am_only_ls_alias),我会得到I_am_only_ls_alias: command not found
我的bash脚本示例:
alias_test.bash
#!/bin/bash

alias I_am_only_ls_alias=ls

I_am_only_ls_alias

运行bash脚本-alias_test.bash
/tmp/alias_test.bash

输出:
/tmp/: line 88: I_am_only_ls_alias: command not found

所以,首先我想问:
为什么bash不将命令I_am_only_ls_alias识别为别名?
我需要做什么才能在bash脚本中定义别名?有可能吗?

最佳答案

bash手册页:
当shell不交互时,别名不会展开,除非使用expand_aliases设置了shoptshell选项(请参见
下面的SHELL内置命令下的shopt说明)。
所以这应该管用:

#!/bin/bash
shopt -s expand_aliases
alias I_am_only_ls_alias=ls
I_am_only_ls_alias

脚本通常使用函数,而不是别名。

07-24 12:33
查看更多