June 17, 2021

Команда pwd

Из этой статьи вы узнаете, как определить текущую рабочую директорию (current working directory) с помощью команды pwd.

Используйте команду pwd, чтобы узнать путь к текущему рабочему каталогу (папке), в котором вы находитесь от корневого каталога.

Команда вернёт абсолютный (полный) путь, который по сути является путём всех каталогов, начинающийся с косой черты (/). Примером абсолютного пути является /home/username.

Команда pwd встроена в большинство современных командных оболочек, в том числе в Bash. Её поведение отличается от выполнения /bin/pwd. С помощью команды type можно получить все места, где есть pwd:

type -a pwd

Получаем вывод:

pwd is a shell builtin
pwd is /bin/pwd

Как показывает вывод, встроенная команда pwd имеет более высокий приоритет по сравнению с /bin/pwd. Поэтому она используется всякий раз, когда вы вводите в командую строку pwd. Если вы хотите использовать файл /bin/pwd, нужно указать в командной строке полный путь до него.

Всё, что делает команда pwd — выводит значение переменной окружения PWD. Такой же вывод получится, если ввести в терминале:

echo $PWD

Команда pwd принимает только два аргумента:

  • -L (--logical) — не разрешать симлинки.
  • -P (--physical) — отображать физическую директорию без симлинков.

По умолчанию pwd ведёт себя так, как будто применена опция -L.

Чтобы понять, как работает аргумент -P, создадим директорию и симлинк, указывающий на эту директорию.

mkdir /tmp/directory
ln -s /tmp/directory /tmp/symlink

Когда вы зайдёте в директорию /tmp/symlink и введёте команду pwd, вывод будет таким:

/tmp/symlink

То есть текущей рабочей директорией становится /tmp/symlink. Если ввести команду pwd -P, вывод будет таким:

/tmp/directory
Симлинк (англ. Symlink, symbolic link) — символическая ссылка. Этим термином обозначают файл, в котором содержится абсолютный или относительный путь к другому файлу или директории.

То есть получаем директорию, на которую указывает симлинк.

Оффтоп: Интересно ещё и то что эта команда имеет историю с 70-х годов лаборатории AT&T Bell Labs системы UNIX где у них работал русский потомок эмигрант из России Виктор Александрович Высотский вроде как был техническим руководителем по созданию операционной системы Multics до Unix по википедии.
В этом ролике про UNIX на 13:37 YouTube https://www.youtube.com/watch?v=tc4ROCJYbm0 настоящий разработчик закинув ноги на стол вводит команду pwd в терминал Unix ровно 50 лет назад 🙂 и получает вывод своей рабочей директории точно так-же как и мы сейчас в 2019 году!