Хотя я понимаю, что эта source
команда выполняет программу в текущей оболочке, я не совсем понимаю, зачем нам нужно запускать ее source .bashrc
для «перезагрузки» файла .bashrc.
Насколько я понимаю, мы не запускаем никакой скрипт, добавляя псевдоним к .bashrc — source .bashrc
мы просто «перезагружаем» файл.
Почему он не перезагружается автоматически?
Наверное, я что-то упускаю.
Как это работает под капотом? Зачем нам нужен source
этот файл, чтобы заставить новые псевдонимы работать без выхода из системы?
решение1
.bashrc
читается только один раз, когда запускается bash. Так задумано (и всегда было). Если вы внесете какие-либо последующие изменения в .bashrc
, они не будут применены, пока .bashrc
не будет перечитан. Запустив source .bashrc
, вы делаете именно это — вы говорите bash перечитать этот файл.
Конечно, вы также можете запустить новую копию bash (например, запустив новый сеанс терминала), это заставит новый процесс bash .bashrc
снова прочитать файл (но в старом сеансе не будет никаких изменений).
Кстати, .bashrc
файлявляетсяскрипт, и, используя его, вы выполняете команды, размещенные в этом файле. Команды определяют псевдонимы в вашем случае, но в этом файле могут быть практически любые команды.