Постоянная переменная Env не распознана

У меня есть скрипт, размещенный в /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

Это как-то связано с подогревом? Я пробовал различные варианты проверки того, установлены ли переменные env.


person Jsack7    schedule 24.06.2020    source источник


Ответы (1)


Вы используете -x с grep; если не ошибаюсь то

Выберите только те совпадения, которые точно соответствуют всей строке

(из man grep).

Я подозреваю, что это начало строки, возможно, с

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

или, если происходит какое-либо exporting, более расширенное регулярное выражение:

if grep -Eq "^[[:space:]]*(export)[[:space:]]*GIT_AUTHOR_NAME[[:space:]]*=" /$PWD/.profile
person r2evans    schedule 24.06.2020
comment
Ваше второе решение работает @r2evans. Удивительно, спасибо! - person Jsack7; 24.06.2020
comment
Вы знаете способ исключить root из этого скрипта? Чтобы по SSH подключаться, если root = не запускать скрипт/не устанавливать переменные env. - person Jsack7; 24.06.2020
comment
[ $UID = 0 ] && exit? (Я предполагаю, что этот сценарий работает от имени пользователя, а не от имени пользователя root.) Хотя я не могу себе представить, чтобы он не работал, вы всегда можете отфильтровать $PWD для домашнего каталога пользователя root. - person r2evans; 24.06.2020