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

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

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

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

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

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

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.

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