重复的系统路径变量 (snap/bin:/snap/bin)

XJM*_*MZX 4 zsh bashrc golang snap

当我运行echo $PATH重复输出snap/bin:/snap/bin出现在最后并且看起来不寻常。

 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
Run Code Online (Sandbox Code Playgroud)

这种重复是不受欢迎的吗?如果是这样,如何改变这种情况?

Lor*_*eel 5

可能,在您的~/.bashrc或您的文件中,~/.profile有一个命令会添加/snap/bin到 中,$PATH而无需事先检查它是否仍在$PATH.

考虑到$PATH当您运行$PATH. 另一方面,当您运行不在其中的命令时,可能会出现减速$PATH(因为当存在重复条目时,会无用地执行命令搜索两次或多次),尽管我认为很难察觉这种减速。当您想直观地检查$PATH变量时,重复条目也有点烦人。

如果你想避免在你的 中重复条目$PATH,你可以在你的~/.profile文件中添加这个命令(这是环境变量的最佳位置):

# remove duplicated paths in PATH variable
PATH="$(printf "%s" "$PATH" | awk -v RS=':' '!a[$1]++ {if (NR > 1) printf RS; printf $1}')"
Run Code Online (Sandbox Code Playgroud)

此命令用于awk识别$PATH变量中的每个项目(它们通过:字符分隔)并重建$PATH变量以避免重新添加重复的文件夹。它还保留了$PATH变量内文件夹的原始排序。

您可以~/.profile使用首选的文本编辑器打开。如果您通过终端打开它,则不需要,sudo因为它属于您的用户。