Linux Mint 中的 $HOME/bin 未附加到 PATH

Linux Mint 中的 $HOME/bin 未附加到 PATH

我创建了文件夹$HOME/bin并在其中放置了一些符号链接。

此外,我设置了复选框Run command as login shell(根据在终端属性中单击“问题”按钮。

现在当我输入时,echo $PATH我看到 bin 目录没有附加到 PATH。我尝试将其放入(默认):

if [ -d "$HOME/bin" ] ; then
    export PATH="$HOME/bin:$PATH"
fi

变成.bash_profile.profile.bashrc没有任何效果。

你知道这里发生了什么问题吗?


更新:如果我打开终端并运行,. ~/.bashrcbin 目录将正确附加到 PATH。但是如果我打开终端并运行,. ~/.profile它不会附加到 PATH(为了进行测试,我在这两个文件中都包含了上面的 if 语句)。

此外,我添加了echo "in bashrc".bashrc当我打开终端时,它会打印“在 bashrc 中”,因此它不会在加载 bashrc 时失败(相同的测试成功.profile)。

答案1

我刚刚找到了问题的答案。我的文件中有以下几行.profile

export PATH="/usr/local/sbin:usr/local/bin:...这当然会将 PATH 重置为此值。这意味着对 PATH 进行更改且高于此行的任何操作都不再有效。

导致此问题的原因如下:前段时间,我.profile用命令修改了我的echo "export PATH=\"$PATH:$HOME/.npm-packages/bin\"" >> ~/.profile。我以为它会$PATH以纯文本形式写入.profile,但它却将其解析为 PATH 的实际内容。我不得不转义美元符号(\$PATH而不是$PATH),现在它可以按预期工作。

答案2

如果缺少 $HOME/bin(或等效项),则问题可能出在您用于设置 PATH 的代码中。您可以通过注释掉设置 PATH 的 if/then 并将其替换为以下内容来检查:

echo "just a test" > ~/justatest
if [ -d "$HOME/bin" ]; then echo "echo bin found" > ~/bin/testresult; fi
chmod 777 ~/bin/testresult
~/bin/testresult

第一行是健全性检查,绝不会失败。最后几行测试 bin 目录的可用性。我使用了 ~ 而不是 $PATH 的惯例——同样的事情。

相关内容