Найти в Дзене
Эникей на передержке

pwd | Команды Linux 🐧

В этой небольшой заметке разберём почему выполнение команды pwd может различаться в зависимости от дистрибутива, что с этим делать и, разумеется, рассмотрим различие параметров в bash и GNU coreutils. Публикация нацелена на администраторов Linux начального и среднего уровней. pwd — это утилита в составе GNU coreutils, которая выводит абсолютный путь к текущей/рабочей директории. По умолчанию расположена в каталоге /bin, но обычно является встроенной в большинство современных оболочек, например, bash. В общем случае синтаксис выглядит следующим образом: pwd [параметры] В зависимости от того является pwd частью командной оболочки или отдельной утилитой, список параметров может различаться. Для утилиты в составе GNU coreutils он выглядит так: Для примера перейдём в каталог /bin и получим абсолютный путь к нему двумя способами: ~$ cd /bin && pwd -L && pwd -P Интересный факт: если указать оба параметра, приоритет будет иметь тот, что указан последним. Запуск утилиты без параметров выведет т
Оглавление

В этой небольшой заметке разберём почему выполнение команды pwd может различаться в зависимости от дистрибутива, что с этим делать и, разумеется, рассмотрим различие параметров в bash и GNU coreutils.

Публикация нацелена на администраторов Linux начального и среднего уровней.

Описание

pwd — это утилита в составе GNU coreutils, которая выводит абсолютный путь к текущей/рабочей директории. По умолчанию расположена в каталоге /bin, но обычно является встроенной в большинство современных оболочек, например, bash.

Синтаксис

В общем случае синтаксис выглядит следующим образом:

pwd [параметры]

Параметры

В зависимости от того является pwd частью командной оболочки или отдельной утилитой, список параметров может различаться. Для утилиты в составе GNU coreutils он выглядит так:

  • -L, --logical — вывести в качестве текущего каталога содержимое переменной окружения PWD. Если путь является символической ссылкой, не указывать фактическое расположение.
  • -P, --physical — вывести в качестве текущего каталога содержимое переменной окружения PWD. Если путь является символической ссылкой, она будет раскрыта.
  • --help — вывод справки.
  • --version — вывод информации о версии.

Примеры использования

Работа с символическими ссылками

Для примера перейдём в каталог /bin и получим абсолютный путь к нему двумя способами:

~$ cd /bin && pwd -L && pwd -P
Команда ls -l подтверждает, что текущий каталог является симлинком /usr/bin
Команда ls -l подтверждает, что текущий каталог является симлинком /usr/bin

Интересный факт: если указать оба параметра, приоритет будет иметь тот, что указан последним.

Использование обоих параметров в одной команде
Использование обоих параметров в одной команде

Запуск утилиты без параметров

Запуск утилиты без параметров выведет текущую директорию. Причём в случае, если текущий каталог является симлинком, он может быть раскрыт (например, если оболочка не переопределила переменные) или не раскрыт (например, если pwd является частью bash). Чтобы наверняка узнать поведение утилиты, используйте:

pwd --help

Совет

Для расширения кругозора, а также чтобы облегчить себе дальнейшее использование утилиты, выполните type pwd. Если утилита является частью оболочки - вы об этом сразу узнаете:

В данном случае pwd интегрирована в оболочку
В данном случае pwd интегрирована в оболочку

Запуск pwd с игнорированием переменных оболочки

Как было сказано выше, поведение утилиты может отличаться из-за настроек оболочки. Чтобы игнорировать переменные окружения (добиться поведения по умолчанию), очистите список переменных:

env pwd

Или можно запустить утилиту не из состава оболочки:

/bin/pwd
Поведение pwd в зависимости от способа запуска
Поведение pwd в зависимости от способа запуска

Заключение

На этом рассмотрение pwd подошло к концу. Исходный код утилиты доступен по ссылке.

Официальная документация находится здесь.

Если статья была полезна, поставьте лайк или подпишитесь на канал, чтобы чаще видеть в ленте подобный контент. Всем добра!)