ZSH:不要将$PATH中列出的文件夹中包含的子文件夹视为可执行文件
ZSH是否可以像Bash一样配置为忽略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
$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
中修复。