
Когда я отображаю руководство по pwd
команде, там написано, что --physical
поддерживаются длинные параметры, такие как
$ man pwd
PWD(1) User Commands PWD(1)
NAME
pwd - print name of current/working directory
SYNOPSIS
pwd [OPTION]...
DESCRIPTION
Print the full filename of the current working directory.
-L, --logical
use PWD from environment, even if it contains symlinks
-P, --physical
avoid all symlinks
Однако, когда я ввожу следующее, происходит сбой
$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
Почему мне не подходят длинные опционы?
Я использую RHEL 6.4. Псевдоним для pwd не настроен. Похоже, это стандартный pwd:
$ which pwd
/bin/pwd
решение1
bash
имеет встроенную команду pwd
, которую вы используете, когда просто вводите данные pwd
в оболочке.
Чтобы получить то pwd
, что описано в man-странице, вам нужно принудительно использовать внешнюю команду. Вы можете сделать это, указав полный путь к исполняемому файлу ( /bin/pwd
в вашем случае) или добавив env
перед строкой: env pwd
, которая запускает env
команду, которую можно использовать для добавления настроек в среду (но здесь этого не делается), а затем env
запускает указанную команду. Поскольку env
не имеет встроенной , выполняется pwd
«реальная» команда./bin/pwd
Преимущество встроенной pwd
в bash команды заключается в том, что она bash
отслеживает текущий каталог, поэтому получение значения не требует никаких затрат, в то время как внешней команде необходимо выполнять поиск по файловой системе, чтобы определить путь, что требует гораздо большего объема операций ввода-вывода.
решение2
Это man-страница /bin/pwd
, но при запуске pwd
вы используете встроенную оболочку; см. вывод
type pwd
Встроенная в вашу оболочку оболочка pwd
не поддерживает длинные параметры (см. документацию по вашей оболочке; поскольку вы используете Bash, help pwd
предоставлю сводку).