在非交互式 shell 中展开别名
Posted
技术标签:
【中文标题】在非交互式 shell 中展开别名【英文标题】:Expand aliases in non-interactive shells 【发布时间】:2014-06-09 02:51:54 【问题描述】:在bash
中,我们可以使用shopt -s expand_aliases
来扩展脚本中的别名。
zsh
、csh
和 tcsh
的等效命令是什么?它们甚至存在吗?
在我的精力集中在zsh
上,我还没有找到这样的命令。我什至尝试使用脚本中的别名来获取文件,但它不起作用。
【问题讨论】:
zsh 似乎默认扩展别名。你能写一些在 zsh 中不起作用的示例代码吗? 如果我在(例如)~/.zshrc
中设置了别名并且我在脚本顶部设置了source $HOME/.zshrc
,则该脚本将无法使用存在于~/.zshrc
中的别名.
它有效,至少对于zsh
。谢谢你。请将其添加为答案,以便我接受。
【参考方案1】:
对于zsh
,您可以使用setopt aliases
#!/usr/bin/zsh
alias hoo="echo bar"
unsetopt aliases
hoo # outputs `./test.zsh:5: command not found: hoo`
setopt aliases
hoo # outputs `bar`
详情请参阅man zshoptions
。
对于csh
和tcsh
,获取文件(例如source $HOME/.cshrc
)就足够了。
【讨论】:
想出了如何在csh
和tcsh
中做到这一点:在相关文件上使用source
就足够了。
aliases
选项在 zsh
中默认开启(至少,截至 2019 年 2 月)以上是关于在非交互式 shell 中展开别名的主要内容,如果未能解决你的问题,请参考以下文章
8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重