13

Когда я ввожу например. новый псевдоним в мой файл .bashrc Я не могу использовать его в этом окне терминала сразу, и до недавнего времени я думал, что мне нужно перезапустить терминал, чтобы перезагрузить файл .bashrc . Тогда я где-то узнал, что если я напишу

. .bashrc

это перезагрузит файл .bashrc в текущем окне, и мне не нужно перезапускать. Это работает плавники, но что на самом деле происходит? Почему это перезагрузить файл .bashrc ?

3 ответа3

17

Потому что . это команда.

Это встроенная команда оболочки, которая читает указанный файл и выполняет команды в нем в текущем процессе оболочки.

Оболочка Bourne Again также имеет source в качестве синонима этой команды. Но это Bashism (который оболочка Bourne Again взяла из C Shell). Хотя это Bashism, который оболочка Bourne Again разделяет с оболочкой TENEX C, Z Shell и другими (но не оболочкой Korn, обратите внимание). Единственная спецификация UNIX только стандартизирует . ,

Также обратите внимание, что поведение ./source слегка изменяется в зависимости от того, запущена ли оболочка Bourne Again в POSIX-совместимом режиме или нет. (Опять же, это похоже на другие оболочки, хотя их нестандартное поведение отличается от поведения друг друга. Например, в Z Shell есть предварительно скомпилированный механизм сценариев оболочки, и source немного отличается от исходного . в его обработке пути поиска. Скорлупа корна . будет запускать функции оболочки, для другого примера.)

~/.bashrc - это всего лишь один из нескольких файлов, содержимое которых (в зависимости от того, как вызывается процесс оболочки) автоматически получается при запуске оболочки. Там нет ничего, что запрещает его вручную . Хотя, если его действия не являются идемпотентными, возможно, вам придется поработать над исправлением.

дальнейшее чтение

1

. Команда аналогична source команде, которая выполняет ваш файл .bashrc . Это добавляет все псевдонимы, которые вы определили, и любые другие параметры / переменные оболочки в текущую среду. Со страницы справки source :

source: source filename [arguments]
    Execute commands from a file in the current shell.
1

help . скажу вам:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

. .bashrc выполняет (источники) файл .bashrc который делает изменения, внесенные в файл, доступными в текущем сеансе.

По умолчанию ~/.bashrc будет читаться при входе в систему.

. это синоним source .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .