#linux #bash #unix
Почему символ . в зависимости от контекста выполняет разные задачи? Например в команде cd . он выполняет роль текущей директории, а в команде . patch/activate является аналогом команды source? P.S наверное я дилетант, но это действительно ломает мне мозг
Ответы
Ответ 1
ни тот ни другой случай употребления не имеет прямого отношения к программе bash как таковой. cd — это определяемая стандартом posix утилита, которая вызывается как cd каталог и служит для изменения текущего каталога для процесса оболочки, её вызвавшего (все популярные posix-совместимые оболочки реализуют её как встроенную команду). в каждом (даже «пустом») каталоге есть как минимум два компонента (в терминах стандарта posix — entries): . и ... первый из них (.) — это ссылка на сам каталог, а второй (..) — это ссылка на «родительский» (т.е., предшествующий в файловой иерархии) каталог. поэтому команда cd . означает: «сменить текущий каталог на него же самого», т.е., фактически, не производит никаких изменений. . — это встроенная команда posix-совместимой оболочки, вызываемая как . файл и служащая для выполнения команд, содержащихся в файле, в контексте текущего процесса оболочки. подробнее см. ответ на соответствующий вопрос.
Комментариев нет:
Отправить комментарий