Cuando muestro el manual para el pwdcomando, dice que --physicalse 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 funcionan para mí?
Estoy usando RHEL 6.4. No hay alias para pwd configurado. Parece que es pwd estándar:
$ which pwd
/bin/pwd

typelugar dewhich, ya quewhichsolo muestra comandos, mientras quetypemuestra palabras clave, builtins, alias, funciones y comandos (y rutas de comandos hash). Para obtener más detalles, consulte ¿Por qué no usar "which"? ¿Qué usar entonces?man pwdtiene la siguiente nota:your shell may have its own version of pwd, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supportsen la parte inferior de laDESCRIPTIONsección.Respuestas:
bashtiene un comando incorporadopwdque es lo que está utilizando cuando simplemente escribepwden su shell.Para obtener lo
pwddescrito en la página de manual, debe forzar el uso del comando externo. Puede hacerlo especificando la ruta completa al ejecutable (/bin/pwden su caso) o anteponiendoenvantes de la línea:,env pwdque inicia elenvcomando que se puede usar para agregar configuraciones al entorno (pero que no se hace aquí) y luegoenvcomienza El comando especificado. Comoenvno tiene una función incorporadapwd,/bin/pwdse ejecuta lo "real" .La ventaja de la función integrada
pwden bash es quebashrealiza un seguimiento del directorio actual, por lo que obtener el valor tiene un costo cero, mientras que el comando externo necesita buscar a través del sistema de archivos para determinar la ruta, que es mucho más intensiva en E / S.fuente
enable -n pwdgetcwd()llamada al sistema, el kernel todavía atraviesa el sistema de archivos, lo que es más fácil de hacer en el espacio del kernel debido al acceso a las estructuras de datos relevantes, como dice la respuesta vinculada: "Sin embargo, tenga en cuenta que incluso en FreeBSD y otros sistemas el núcleo no realiza un seguimiento del directorio de trabajo con una cadena ".Esa página de manual documenta
/bin/pwd, pero cuando ejecutaspwdestás usando el shell incorporado; ver la salida deLa función integrada de su shell
pwdno admite opciones largas (consulte la documentación de su shell, ya que está utilizando Bash,help pwdproporcionará un resumen).fuente