¿Por qué la línea de comandos no respeta el orden PATH en OS X?

2

Agregué un comando ssh dentro de ~/bin/ssh y modifiqué PATH para incluirlo, antes de otras rutas.

Cuando ejecuto which ssh responderá con ~/bin/ssh pero cuando ejecuto ssh solo ejecutará /usr/bin/ssh en su lugar.

No tengo alias para ssh .

¿Cuál es la razón y cómo puedo solucionarlo?

    
pregunta sorin 06.09.2013 - 14:38

2 respuestas

4

No use which , use type . El comando which en el shell predeterminado (bash) es una utilidad externa que no conoce los alias y las funciones. Por otro lado, type es una utilidad interna que le dirá si su argumento es un alias, una función, una utilidad incorporada o un comando externo.

El comando which se menciona en los tutoriales y manuales solo por razones históricas: hace 30 años, el comando type no existía en todas partes, y algunas personas han tardado en adaptarse.

Para obtener más detalles, incluida una discusión sobre shells históricos y actuales, consulte ¿Por qué no usar" cuales "? ¿Qué usar entonces?

$ type cp
cp is aliased to 'cp -i'
$ type mkcd
mkcd is a function
mkcd ()
{
…
}
$ type type
type is a shell builtin
$ type cat
cat is /bin/cat

En zsh, está bien usar which : zsh tiene type y which como comandos integrados.

También tenga en cuenta que si acaba de instalar o eliminar un programa, es posible que el shell haya memorizado su ubicación anterior. Por ejemplo, si acaba de instalar su propia versión de un programa en un directorio que está por delante de los directorios del sistema en $PATH , el shell puede seguir invocando el programa que viene con el sistema. Esto es solo un problema en shells que ya se estaban ejecutando en el momento de la instalación o desinstalación. Para actualizar la memoria del shell con los datos actuales, ejecute el comando hash -r o hash COMMANDNAME .

    
respondido por el Gilles 26.12.2013 - 20:32
0

Mistety solucionó, tenía una función en bash_profile con este nombre ...

Lo encontré usando: set | grep ssh

    
respondido por el sorin 06.09.2013 - 14:40

Lea otras preguntas en las etiquetas