无法识别永久环境变量

Permanent Env variable not recognised

我在 /etc/profile.d/script.sh 中放置了一个脚本,在 SSH 连接时检查用户是否在他们的环境变量中设置了 'GIT_AUTHOR_NAME' 和 'GIT_AUTHOR_EMAIL' ~/.profile 文件。

如果没有,它会要求输入这些详细信息。我遇到的问题是,即使存在 Env 变量,脚本也会不断要求输入详细信息。这就是 /etc/profile.d/script.sh 的样子:

if grep -Fxq "GIT_AUTHOR_NAME" /$PWD/.profile
then
    echo Git details already known > /dev/null
else
    echo "To make sure your commits are shown under your name, you have to enter your Git details once."
    read -p "Enter your Git author name: " gituser
    echo export GIT_AUTHOR_NAME="$gituser" >> /$PWD/.profile
    read -p "Enter your Git e-mail address: " gitemail
    echo export GIT_AUTHOR_EMAIL="$gitemail" >> /$PWD/.profile
    echo "Your git name "$gituser" and e-mail "$gitemail" are now saved as environment variables in your .profile file."
fi

这与某种子脱壳有什么关系吗?我尝试了各种检查环境变量是否设置的差异。

您正在使用 -x 和 grep;除非我记错了,那

"Select only those matches that exactly match the whole line"

(来自 man grep)。

我怀疑它是该行的开头,也许是

if grep -q "^GIT_AUTHOR_NAME" /$PWD/.profile

或者,如果有任何 exporting 正在进行,更广泛的正则表达式:

if grep -Eq "^[[:space:]]*(export)[[:space:]]*GIT_AUTHOR_NAME[[:space:]]*=" /$PWD/.profile