Разница между cd и функцией chdir

В чем разница между командой оболочки cd и функцией Perl chdir? Не могли бы вы объяснить на примере?


person iDev    schedule 21.08.2012    source источник


Ответы (2)


Команда cd изменяет текущий каталог процесса оболочки; функция Perl chdir изменяет текущий каталог процесса Perl. Это одно и то же, только пишется по-разному.

person Alan Curry    schedule 21.08.2012
comment
Обратите внимание, что обе оболочки cd и Perl chdir реализованы в терминах системного вызова chdir(2). Современные команды cd оболочки делают вид, что символьных ссылок нет, но когда приходит время сменить каталог, они по-прежнему используют chdir(2). - person Jonathan Leffler; 21.08.2012
comment
@JonathanLeffler Я не использую perl с заглавной буквы, потому что он основан на ложном утверждении, что язык Perl существует независимо от программы Perl. На самом деле язык - это то, что принимает (единственная) реализация, даже если поведение противоречит документации. Как говорится в perlfaq: Q: Есть ли версия Perl, сертифицированная по ISO или ANSI? A: Конечно, нет. Ларри ожидает, что он будет сертифицирован раньше Perl. Мне неловко видеть, что что-то написано так, как я бы точно не написал, с моим именем на нем. - person Alan Curry; 21.08.2012
comment
@AlanCurry: Я не согласен с вашим выбором стиля, но это ваш пост, и вы можете делать с ним все, что хотите. - person Jonathan Leffler; 21.08.2012
comment
Выбор действительно Perl и perl. perl не имеет смысла. - person ikegami; 22.08.2012

По сути, они оба делают одно и то же, но chdir - это системный вызов POSIX, а cd - обычная функция, используемая в программе, которая в данном случае является оболочкой.

На практике chdir вызывается cd для изменения каталога, поскольку программа не имеет прав ядра, чтобы сделать это самостоятельно.

person Itamar Katz    schedule 01.07.2016