Наследует ли процесс как логические, так и физические рабочие каталоги?

Наследует ли процесс как логические, так и физические рабочие каталоги?

Я знаю, что когда процесс запускается, он наследует рабочий каталог своего родительского процесса. Но наследует ли он и логический, и физический рабочий каталог или только физический рабочий каталог?

решение1

Хм, что-то вроде того. «Логический» рабочий каталог переносится в переменную окружения PWD.environ(7)говорит, что это "Устанавливается некоторыми оболочками", поэтому очевидно зависит от приложения. Другая проблема заключается в том, что другая программа читает это:

/tmp$ ln -s ~ link  
/tmp$ cd link  
/tmp/link$ bash -c "pwd"
/tmp/link
/tmp/link$ zsh -c "pwd" 
/home/itvirta
/tmp/link$ dash -c "pwd"
/tmp/link

Bash, dashпохоже, рассчитывает на это, но zshне делает этого (в моей системе, я уверен, это настраивается).

решение2

Theполучитьcwdсистемный вызов возвращает физические пути, какPOSIXпредписывает, что

Имя пути не должно содержать компонентов, представляющих собой точку или пару «точка-точка», а также символические ссылки.

Linux, по-видимому, использует для передачи CWD более низкоуровневый механизм, чем имена, поскольку вы можете переименовать каталог, пока другая программа использует его в качестве своего CWD.

Связанный контент