Помогите разобраться в строке в.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.