我有一个.bashrc
设置PATH
,并且还提供了另一个文件来扩展所述变量并定义新变量。看起来在通过 IDEA 终端打开的 bash 中,此源配置文件中的 PATH 扩展未应用。
.bashrc:
if [[ "$ENV_LOADED" != "loaded" ]]; then
source .extra-conf
fi
export PATH="/mypath:$PATH"
.额外配置:
for i in \
"$HOME/bin" \
/sbin \
if [[ -d "$i" && :$PATH: != *:"$i":* ]]; then
j+="$i:"
fi
done
[[ -n "$j" ]] && export PATH="${j}$PATH"
unset i j
export OTHER_VAR=value1
# marker var used to detect whether env vars have been loaded:
export ENV_LOADED=loaded
笔记PATH
将要包含/mypath
,并且OTHER_VAR
来自 .extra-conf 也可用。但是 .extra-conf 中的所有 PATH 扩展都缺失。这只发生在 IDEA 中,在它之外的其他终端中一切都很好。
这里到底发生了什么?显然 .extra-conf 已被引用,否则 OTHER_VAR 不会被定义 - 那么为什么 PATH 没有更新?
编辑:
根据 Kamil 的评论,围绕 if 块set -x
,输出为
+++ [[ loaded != \l\o\a\d\e\d ]]
+++ set +x
++ [[ loaded != \l\o\a\d\e\d ]]
++ set +x
该终端会话还有更多问题 - ssh 密钥也未解锁,如下所示:
Could not open a connection to your authentication agent.
Could not open a connection to your authentication agent.
注意密钥应该由 gnome-keyring-daemon 解锁,从 .xinitrc 执行:
eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
看起来这是由于SSH_AUTH_SOCK
IDEA 终端中缺少环境变量导致的。