无法删除部分$ PATH


1

我试图解决我遇到的任何问题brew doctor,所以我看到:

Warning: Some directories in your path end in a slash.
Directories in your path should not end in a slash. This can break other
doctor checks. The following directories should be edited:
    /usr/local/Cellar/node/5.0.0/bin/

我看着~/.profile~/.bash_profile/etc/paths-并没有看到这条道路。

文件/etc/paths.d/夹中没有包含此字符串的文件。

那么这$PATH部分来自哪里呢?


1
echo $PATH在终端试过了吗?
I0_ol 2016年

1
$ PATH也可以通过启动代理/守护进程和*配置文件中的任何shell脚本进行修改!
klanomath 2016年

@ user556068试了一下。它怎么能帮到我?
ДаниилПронин2016年

@klanomath好的,我怎么能找到它们?
ДаниилПронин2016年

1
你是说在/运行时没有看到以a结尾的目录echo $PATH
I0_ol 2016年

Answers:


1

从你的问题来看,问题似乎是一个以a结尾的目录/。听起来好像Homebrew告诉你导致错误的目录/usr/local/Cellar/node/5.0.0/bin/。如果是这种情况,那么您只需要/从此目录中删除尾随。

但是听起来你也说你没有看到这个问题目录$PATH。运行echo $PATH将显示PATH中的目录。如果你的PATH像我一样包含很多目录,这可能有点难以阅读。那么也许你只是忽略它?

在任何情况下,这是一个简单的脚本,向您显示PATH中的所有目录; 每行1个。

#!/bin/bash

# save IFS to a variable    
old_IFS=${IFS$' \t\n'}

#set IFS to a colon
IFS=':'

for item in ${PATH[@]}
do 
    echo $item
done

# set IFS back to the default setting
IFS=$old_IFS

或者,如果您希望直接在终端中复制和粘贴:

old_IFS=${IFS-$' \t\n'}; IFS=':'; for item in ${PATH[@]}; do echo $item; done; IFS=$old_IFS

或者是fd0在评论中指出的更简单的方法:

tr -s ':' '\n' <<<"$PATH"

这还有一个额外的好处,就是不需要乱用IFS

使用上述任何一个脚本,如果你找到以a结尾的行,/那么你就找到了罪魁祸首。


1
你的代码可以使用被简化trherestring-tr -s ':' '\n' <<<"$PATH"
FD0

@ fd0感谢您的信息。我用简化的方法更新了答案。
I0_ol 2016年

不,如果我跑的话,我看到这个问题是PATH的一部分echo $PATH。输出将是/usr/local/Cellar/node/5.0.0/bin/ /usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/X11/bin /usr/local/sbin /Users/grawl/.composer/vendor/bin
ДаниилПронин2016年

然后,你需要删除尾随//usr/local/Cellar/node/5.0.0/bin/
I0_ol

@ user556068显然。但我找不到要编辑的文件。
ДаниилПронин2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.