别名和shopt -s expand_aliases在条件语句中不起作用

时间:2015-02-26 06:42:12

标签: bash conditional alias

在非交互式bash脚本中,这些工作:

alias hi="echo hi"
shopt -s expand_aliases
hi

alias hi="echo hi"
if [[ 1 ]]; then
    shopt -s expand_aliases
fi
hi

shopt -s expand_aliases
if [[ 1 ]]; then
    alias hi="echo hi"
fi
hi

alias hi="echo hi"
shopt -s expand_aliases
if [[ 1 ]]; then
    hi
fi

但这些不是

alias hi="echo hi"
if [[ 1 ]]; then
    shopt -s expand_aliases
    hi #hi: command not found
fi

shopt -s expand_aliases
if [[ 1 ]]; then
    alias hi="echo hi"
    hi #hi: command not found
fi

任何人都可以解释原因吗?

是否与this相关?

  

在读取命令时扩展别名,而不是在执行命令时扩展别名。

这是否意味着在执行前读取整个bash条件?

0 个答案:

没有答案