在Linux系统上定义别名非常简单。
从下面的示例中我们可以看到:I_am_only_ls_alias
alias命令将输出作为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
设置了shopt
shell选项(请参见
下面的SHELL内置命令下的shopt
说明)。
所以这应该管用:
#!/bin/bash
shopt -s expand_aliases
alias I_am_only_ls_alias=ls
I_am_only_ls_alias
脚本通常使用函数,而不是别名。