Я пытался искать везде, чтобы определить, что эта строка делает в моем .bashrc. Причина, по которой я хочу знать, заключается в том, что теперь ~ / .pam_environment рекомендуется . Это строка:
[[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh
Я думаю, что я сузил его до проверки условий, чтобы убедиться, что файл nvm.sh
существует и что он больше 0 байтов. Но я не понимаю, что следует. &&
обычно означает «и», но я не понимаю, почему это будет необходимо после проверки, а также почему .
не прикреплено к имени файла.
По сути, я хочу знать, как бы я поместил это в мой файл .pam_environment
, который принимает только выражения задания.
Редактировать: Эта строка в настоящее время позволяет мне запускать NVM из терминала, но мне бы очень хотелось знать только ради обучения.
Да, вы правы, что [[ -s ... ]
проверяет, существует ли файл. Если это произойдет, он выйдет со статусом 0
, а если нет, то выйдет как 1
(то есть потерпит неудачу).
Команда &&
/ оператор / все, что выполняется, выполняет следующую команду, если команда до того, как она была выполнена успешно (то есть, состояние выхода - 0
). ||
, наоборот, запускает следующую команду, если ранее не выполненная команда (т.е. не 0
).
Имеет .
перед именем файла (с пробелами между ними), запускает файл, но также сохраняет любые изменения переменных среды, которые он вносит. Например, если я сделаю test.sh
следующим образом:
#!/bin/bash
FOO=bar
BAR=baz
BAZ=foo
PATH="FOO:$PATH"
и выполню . path/to/test.sh
, появятся новые переменные: FOO
, BAR
, BAZ
и PATH
. ] будет обновлено. Обратите внимание, что source
, я думаю, делает то же самое, что и .
. РЕДАКТИРОВАТЬ : Да, source
и .
являются синонимами в bash.