Помогите разобраться в строке в .bashrc

Я пытался искать везде, чтобы определить, что эта строка делает в моем .bashrc. Причина, по которой я хочу знать, заключается в том, что теперь ~ / .pam_environment рекомендуется . Это строка:

[[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh

Я думаю, что я сузил его до проверки условий, чтобы убедиться, что файл nvm.sh существует и что он больше 0 байтов. Но я не понимаю, что следует. && обычно означает «и», но я не понимаю, почему это будет необходимо после проверки, а также почему . не прикреплено к имени файла.

По сути, я хочу знать, как бы я поместил это в мой файл .pam_environment, который принимает только выражения задания.

Редактировать: Эта строка в настоящее время позволяет мне запускать NVM из терминала, но мне бы очень хотелось знать только ради обучения.

3
задан 20 June 2013 в 08:48

1 ответ

Да, вы правы, что [[ -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.

0
ответ дан 20 June 2013 в 08:48

Другие вопросы по тегам:

Похожие вопросы: