我注意到Linux shell命令“尽管在搜索路径上已经显示了恶意,但该命令没有显示可执行文件”。
更具体地说,我的$ PATH包含'〜/ .local / bin'; 可执行文件是〜/ .local / bin / charm。尽管我可以毫无问题地运行“魅力”,但“哪个魅力”什么也不会返回。我正在使用Ubuntu 16.04和bash
该问题取决于Linux发行版。如果我登录到RHEL 6.10的另一台计算机,则命令'which charm'可以很好地用于同一可执行文件。
该问题也可能与nfs挂载有关。在Ubuntu 16.04上,命令“哪个”似乎对本地磁盘上的可执行文件正常工作,例如,“其中哪个”显示为“ / usr / bin / which”,但在nfs路径上找不到可执行文件,这种情况为我的〜/ .local / bin。
我在网上搜索,但找不到尸体。有没有一种方法可以使Ubuntu下的命令“哪个”在路径上显示所有已执行的可执行文件,包括nfs挂载?
谢谢!
您的$PATH
包括~/.local/bin
波浪号尚未扩展的地方。bash
每次都会动态扩展它,但是which
(至少在Ubuntu上)还是sh
不会。
如果要which
查看其中的可执行文件,则~/.local/bin
需要确保在变量获取之前,波浪号已展开PATH
。该字符串~/.local/bin
可能是PATH
通过启动脚本之一添加到您的。找到相关的行,并根据以下示例进行修复。
注意:首先在一个新的shell中运行以下每个示例,因此您可以观察(echo "$PATH"
)每次如何独立更改变量。
这不会扩展波浪号字符(因为加引号):
PATH="~/.local/bin:$PATH"
这会:
PATH=~/".local/bin:$PATH"
或这个:
PATH=~/.local/bin:$PATH
波浪线扩展的规则有些复杂。考虑使用$HOME
。例子:
PATH="$HOME/.local/bin:$PATH"
PATH="$PATH:$HOME/.local/bin"
要修复已建立的PATH
变量,请~
用以下内容替换$HOME
:
PATH="${PATH/\~/$HOME}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句