2

Возьмите cd в качестве примера. Кроме того, именно cd напоминает мне об этом вопросе. Когда мы вводим "cd" и нажимаем enter на терминале, дочерний процесс cd терминала запускается, и, на мой взгляд, все, что касается cd , выполняется в дочернем процессе cd . К моему удивлению, как cd может изменить переменную окружения своего родительского процесса?

1 ответ1

4

cd не вносит никаких изменений в свой родительский процесс, потому что cd не является процессом.

Это встроенная оболочка - конструкция, которая наиболее (каждый?) оболочка должна изменить свой контекст каталога.

cd на bash изменит ваш cwd на bash. cd на Zsh будет делать то же самое на Zsh. Это bash/zsh, которые делают это. И они меняют свой собственный контекст.

При этом я не думаю, что дочерний процесс может изменить среду своего родителя. Это должно быть теоретически возможно при непосредственном доступе к памяти, но я предполагаю, что мы говорим о реальных сценариях :-)

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