gpt4 book ai didi

linux - which 命令在 zsh 和 bash 中的不同行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:30 24 4
gpt4 key购买 nike

通过将 zsh 与 oh-my-zsh 框架一起使用一段时间,我注意到哪个命令在 zsh 中的行为与在 bash 中的行为不同。

我的意思是:

# on zsh
ilias@ilias-pc ~ ➜ which ls
ls: aliased to ls --color=auto
ilias@ilias-pc ~ ➜ which which
which: shell built-in command
ilias@ilias-pc ~ ➜ bash
[ilias@ilias-pc ~]$ which ls
/usr/bin/ls
[ilias@ilias-pc ~]$ which which
/usr/bin/which
[ilias@ilias-pc ~]$

为什么会发生这种情况,我该如何“修复”它?

附言。我在 Arch Linux 上重现了这个(不确定它是否重要但我提到了它)。

最佳答案

$ zsh -c 'type which'
which is a shell builtin
$ bash -c 'type which'
which is /usr/bin/which

解决方案是不使用 which(1),这是一个非标准且不是很有用的命令。由于替代方案指定不当且实现不一致,您应该使用什么的问题并不是最直接的,但它们比 which 更好。

根据您的要求,您需要 command(请参阅 -v 选项)、typewhence。前两者请参阅 POSIX,后者请参阅您的 shell 手册。 (Bash 不支持 whence,但大多数其他 ksh 衍生产品都支持它,尽管不一致。它通常具有最多的功能)。

关于linux - which 命令在 zsh 和 bash 中的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com