在 bash 中设置 $PATH 时遇到问题

问题描述 投票:0回答:1

我的路有点长。我从这些组件构建我的路径。

PART1="/home/$USER/.local/bin:/home/$USER/bin:/usr/local/sbin:/usr/local/bin"
PART2="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
PART3="/usr/local/bin:/home/local/bin:/usr/bin/mh:/home/$USER/go/bin"

export PATH=${PART1}:${PART2}:${PART3}

从 ~/.bash_profile 中运行上面的代码会呈现下面的内容。

/home/kevinc/.local/bin:/home/kevinc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/bin:/home/local/bin:/usr/bin/mh:/home/kevinc/.go/bin:/home/kevinc/go/bin

但是,从使用 ~/.bash_profile 的新终端窗口中,该 shell 中的路径如下。请注意路径“.”已预先添加,并且最后三个目录并未出现在最终结果中。

.:/home/kevinc/.local/bin:/home/kevinc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/bin

我更改了脚本中 PART2 和 PART3 的顺序,输出目录列表仍保持上述顺序。

我想知道环境变量大小是否有最大长度。这个问题已经被许多人在查找 Linux 中使用的限制源代码时多次得到了回答。其他人决定继续增加环境变量的大小,直到程序停止正常工作。这些答案的大小在 10k 到 30M 之间。我认为 244 个字符的大小可能不是限制。

就其价值而言,我正在运行 Linux Mint 21.3,一个版本。落后于最新版本。

是的,我通过 http://shellcheck.net

运行了我的代码
bash environment-variables export
1个回答
0
投票

.bash_profile
仅由登录 shell 提供,其
SHLVL
1

在 Linux 桌面会话中,“新”终端不是登录 shell(您可以

echo "$SHLVL"
检查它),所以自然地,对您的
.bash_profile
的任何修改在您重新登录之前都不会被考虑进入您的图形会话。

这就是人们倾向于在

.bashrc
而不是
.bash_profile
中修改环境变量的原因之一。恕我直言,这不是一个很好的做法,因为当使用 Linux(我不会在这里命名)在
export PATH=/opt/bin:$PATH
/opt/bin:/opt/bin:/opt/bin:/opt/bin:/opt/bin:/opt/bin:/bin:/usr/bin:/usr/local/bin
打开终端时,简单的
SHLVL
可能最终会变成
6
。 ..

© www.soinside.com 2019 - 2024. All rights reserved.