zsh中type -t commandName命令失效,bash中正常的问题咨询
Zsh与Bash中
type命令的差异及替代方案 为什么Zsh的type和Bash的不一样?
type是shell的内置命令,不同shell(比如Bash、Zsh)的内置命令由各自独立实现,参数设计和行为自然存在差异。Bash的type支持-t参数来输出命令类型的简短标识,但Zsh的type命令并未设计该参数,因此执行type -t commandName会抛出type: bad option: -t的错误。
如何在Zsh中实现Bashtype -t的功能?
直接使用Zsh内置的whence命令搭配-t参数即可,效果和Bash的type -t完全一致:
whence -t commandName
举几个实际例子:
- 查看外部命令:
whence -t ls→ 输出command - 查看内置命令:
whence -t cd→ 输出builtin - 查看别名:
whence -t ll(假设ll是ls -l的别名)→ 输出alias
如果习惯用type这个命令名,可以给whence -t设置别名,在~/.zshrc中添加:
alias type='whence -t'
保存后重启shell,之后直接输入type commandName就能得到和Bashtype -t相同的结果。
Zsh里找不到type命令的帮助怎么办?
Zsh的type是内置命令,并非系统外部可执行文件,所以man type无法查到相关内容。要查看它的帮助:
- 先启用
run-help功能:在~/.zshrc中添加autoload -Uz run-help,重启shell后输入run-help type,即可看到type的详细说明。 - 也可以直接查看Zsh内置命令总手册:输入
man zshbuiltins,在文档内搜索type就能找到对应内容。
内容的提问来源于stack exchange,提问作者vitalPriva
相关产品推荐
相关产品推荐

