在非交互式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条件?