
Cuando muestro el manual del pwd
comando, dice que --physical
se admiten opciones largas como
$ 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
Sin embargo, falla cuando escribo lo siguiente
$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
¿Por qué las opciones largas no me funcionan?
Estoy usando RHEL 6.4. No se ha configurado ningún alias para pwd. Parece que es pwd estándar:
$ which pwd
/bin/pwd
Respuesta1
bash
tiene un comando incorporado pwd
que es lo que estás usando cuando simplemente escribes pwd
en tu shell.
Para obtener lo pwd
descrito en la página de manual, necesita forzar el uso del comando externo. Puede hacer esto especificando la ruta completa al ejecutable ( /bin/pwd
en su caso) o anteponiendo env
antes de la línea: env pwd
, que inicia el env
comando que se puede usar para agregar configuraciones al entorno (pero que no se hace aquí) y luego env
inicia el comando especificado. Como env
no tiene incorporado , se ejecuta pwd
el "real" ./bin/pwd
La ventaja del pwd
bash integrado es que bash
realiza un seguimiento del directorio actual, por lo que obtener el valor tiene un costo cero, mientras que el comando externo necesita buscar en el sistema de archivos para determinar la ruta, lo que requiere mucho más IO.
Respuesta2
Esa página de manual documenta /bin/pwd
, pero cuando la ejecutas pwd
estás usando el shell incorporado; ver la salida de
type pwd
La función integrada de su shell pwd
no admite opciones largas (consulte la documentación de su shell; dado que está usando Bash, help pwd
le proporcionará un resumen).