ZSH:不要将$PATH中列出的文件夹中包含的子文件夹视为可执行文件

ZSH:不要将$PATH中列出的文件夹中包含的子文件夹视为可执行文件,path,zsh,Path,Zsh,ZSH是否可以像Bash一样配置为忽略$PATH中列出的目录中包含的子目录 据介绍,$PATH中列出的文件夹中包含的子文件夹的处理方式与ZSH中的可执行文件类似(而Bash则不考虑它们) 例如,如果$PATH包含文件夹/usr/local/bin,并且/usr/local/bin中有一个子文件夹md5(但在它后面的路径$PATH中没有这样的可执行文件),则键入md5并输入将给出响应zsh权限被拒绝:(而不是在Bash中找不到command),因为md5不是命令,而是目录 例如,当脚本在Linux

ZSH是否可以像Bash一样配置为忽略
$PATH
中列出的目录中包含的子目录

据介绍,
$PATH
中列出的文件夹中包含的子文件夹的处理方式与ZSH中的可执行文件类似(而Bash则不考虑它们)

例如,如果
$PATH
包含文件夹
/usr/local/bin
,并且
/usr/local/bin
中有一个子文件夹
md5
(但在它后面的路径
$PATH
中没有这样的可执行文件),则键入
md5
并输入将给出响应
zsh权限被拒绝:
(而不是在Bash中找不到
command
),因为
md5
不是命令,而是目录

例如,当脚本在
Linux
上检查命令
md5
是否可用时(在MacOS上默认情况下是这样),并且
zsh
错误地返回true(正确的命令应该是
md5sum
)。这是一个经常出现的问题,它会将
%PATH%
中的所有路径转换并附加到
$PATH


在“”和“”中也提出了类似的问题,但答案并未触及问题的核心。

您链接到的邮件涉及尝试将空字符串作为命令执行,而不是尝试执行与您键入的命令匹配的子目录。我不确定如何重现您描述的场景。没错,它最接近于对相反情况的解释t到Bash如何处理它。关于复制所描述的场景,除了给出的示例之外,还有在这个平台上的两个链接问题中描述的场景。正如我所说,我无法复制。我有一个目录
~/bin/foo
,并且
~/bin
在我的路径上。如果我尝试执行
foo
,我会得到“未找到命令”,而不是“权限被拒绝”。很有趣。在zsh 5.6(x86_64-suse-linux-gnu)上使用空的
/etc/zshenv
/etc/zshrc
/etc/zprofile
~/.zshrc
~/.zshenv
~/.zprofile
~/.zlogin
,场景仍然存在。好的,我正在使用5.7.1。刚刚尝试在另一台机器上使用5.3,可以获得“拒绝许可”"消息。我想知道它是否在最新版本的
zsh
中已修复。您链接到的邮件涉及尝试将空字符串作为命令执行,而不是尝试执行与您键入的命令相匹配的子目录。我不确定如何重现您描述的场景。没错,它最接近于解释什么与Bash处理它的方式相反。关于复制所描述的场景,除了给出的示例之外,还有在这个平台上的两个链接问题中描述的场景。正如我所说,我无法复制。我有一个目录
~/bin/foo
,并且
~/bin
在我的路径上。如果我尝试执行
foo
>在zsh5.6(x86_64-suse-linux-gnu)上,我得到的是“未找到命令”,而不是“拒绝权限”使用空的
/etc/zshenv
/etc/zshrc
/etc/zprofile
~/.zshrc
~/.zshenv
~/.zprofile
~/.zlogin
,场景仍然存在。好的,我正在使用5.7.1。刚刚在另一台机器上尝试使用5.3,可以获得“拒绝许可”消息。我想知道它是否已经在最新版本的
zsh
中修复。