是否有一些特殊的路径前缀,如~,表示“在路径中搜索所有地方”?我知道当只提供可执行文件的基本名称时,这是默认行为,但是使用像a=b这样的奇特的可执行文件名称,我只能使用路径调用它,无论是完整的还是相对的。/a=b。如果我只提供基本名称a=b,bash将其解释为变量赋值。
发布于 2012-08-31 20:15:51
没有这样的前缀。如果你的唯一目的是执行一个带有“奇怪”字符的文件名,你就不需要了:只要引用这些字符就行了,例如'a=b'或a\=b。然后,bash的解析和扩展导致命令的第一个单词是a=b,它和其他命令名一样在path中查找。
如果您想在路径中查找程序,但不想执行它,请使用command -v。(还有其他具有相同效果的内置,command -v具有可移植性的优势(它是一个bash内置,并且是POSIX语言)。不要使用which,它是一个外部命令,不可靠且不可移植。)
如果要查找包含a=b all the directories in the path,可以使用type -a。
type -aP a=b发布于 2012-08-31 19:46:40
它不完全是一个前缀,但是引用可执行文件的名称(比如'a=b')就可以在路径中找到它。(Bash 3.2.17)
发布于 2012-08-31 20:05:51
内置的command正是为此目的而设计的,即查找命令(不是别名,也不是函数)。
command a=b应该能行得通。来自bash手册:
命令-pVv命令arg ...使用args运行命令,禁止正常的shell函数查找。仅执行内置命令或在路径中找到的命令。如果给定了-p选项,则使用PATH的默认值执行搜索命令,该路径可以确保找到所有标准实用程序。如果提供了-V或-v选项,将打印命令的说明。-v选项会显示一个单词,指示用于调用命令的命令或文件名;-V选项会生成更详细的描述。如果提供了-V或-v选项,则在找到命令时退出状态为0,如果未找到,则退出状态为1。如果未提供任何选项且发生错误或找不到命令,则退出状态为127。否则,内置命令的退出状态为command的退出状态。
https://stackoverflow.com/questions/12214279
复制相似问题