Como se menciona en esta excelente respuesta , los sistemas POSIX tienen un binario externo cdademás del shell incorporado. En OS X 10.8 es /usr/bin/cd. No puede usarlo como el incorporado cdya 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/cdSin embargo, mi Fedora 19 incluye ./bin/cdni/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 quecdcambia 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
cdcomando 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,timeyxargscombinado 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,
cdya 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, unsetsería irrelevante como comandos externos, mientras quecdes 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
cdejecutable procesará y usará laCDPATHvariable, 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.
cdtambién procesaOLDPWDparacd -, pero eso es menos concretamente útil ya que la variable de entorno ya estaría disponible.fuente