Como se menciona en esta excelente respuesta , los sistemas POSIX tienen un binario externo cd
además del shell incorporado. En OS X 10.8 es /usr/bin/cd
. No puede usarlo como el incorporado cd
ya que sale inmediatamente después de cambiar su propio directorio de trabajo. ¿Para qué sirve?
cd-command
command
posix
kojiro
fuente
fuente
/usr/bin/cd
, solo el shell incorporado./bin/cd
Sin embargo, mi Fedora 19 incluye ./bin/cd
ni/usr/bin/cd
.Respuestas:
Sirve principalmente para asegurarse de que el cofre de herramientas POSIX esté disponible tanto dentro como fuera de un shell (consulte la justificación POSIX para solicitarlos ).
Para
cd
, eso no es tremendamente útil, pero tenga en cuenta quecd
cambia los directorios pero tiene otros efectos secundarios: devuelve un estado de salida que ayuda a determinar si puede accederchdir()
a ese directorio o no, y genera un mensaje de error útil que explica por qué no puedechdir()
cuando no puedesEjemplo:
Otro posible efecto secundario es el montaje automático de un directorio.
En algunos sistemas, la mayoría de los comandos externos para las construcciones de shell estándar se implementan como un enlace simbólico al mismo script que:
Es decir, iniciar un shell y ejecutar el builtin en él.
Algunos otros sistemas (como GNU) tienen utilidades como verdaderos comandos ejecutables que pueden generar confusión cuando el comportamiento difiere de la versión incorporada del shell.
fuente
cd
comando externo . Puede ser útil para monitorear la disponibilidad de un sistema de archivos remoto automontable, o tal vez antes de hacer algo crítico con uno.El hecho de un comando cd no está disponible orden interna se debe esencialmente a la POSIX requisito para todas las órdenes internas regulares para ser exigible por los comandos de la familia exec
env
,find
,nice
,nohup
,time
yxargs
combinado con el hecho de que algunos de estos comandos no están siendo implementados como a sí mismos órdenes internas.Sin embargo, eso no tiene mucho sentido,
cd
ya que combinarlo con estos comandos no tiene sentido. Sin embargo, aquí hay ejemplos más o menos sostenibles:fuente
break, :, continue, . , eval, exec, exit, export, readonly, return, set, shift, times, trap, unset
sería irrelevante como comandos externos, mientras quecd
es un componente normal que tiene algunos casos de uso documentados como un comando.Además de verificar si una ruta corresponde a un directorio accesible, el
cd
ejecutable procesará y usará laCDPATH
variable, e imprimirá la ruta absoluta del directorio resuelto si se usó con éxito.Esto solo es muy útil ocasionalmente, pero ahorraría volver a implementar la misma lógica para buscar directorios coincidentes. Un caso de uso concreto es encontrar el primer directorio existente de un nombre particular bajo varios padres posibles.
cd
también procesaOLDPWD
paracd -
, pero eso es menos concretamente útil ya que la variable de entorno ya estaría disponible.fuente