Los ejecutables en / bin y / usr / bin no se encuentran en la ruta

1

De alguna manera, no puedo ejecutar archivos en /bin o /usr/bin sin proporcionar la ruta completa.

Esto no ocurre cuando se ejecuta desde Terminal, pero, por ejemplo, iTerm no puede ejecutar bash (solo /bin/bash ), OnyX no puede ejecutar sw_vers .

.profile: export PATH=/opt/local/bin:/opt/local/sbin:/bin:/usr/bin:$PATH 
.profile: export PATH=$PATH 
.bash_history: export PATH="$PATH:"'/Users/gilstrauss/Applications/CrossOver.app/Contents/SharedSuppor‌​t/CrossOver/bin' 
.bash_history: export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
.bash_history: export PATH=${PATH}:/bin 
.bash_profile: export PATH=/bin:$PATH 
.bashrc: export PATH=${PATH}:/bin:/usr/bin
    
pregunta user49204 14.05.2012 - 17:00

4 respuestas

3

Terminal.app iniciar el shell correctamente no significa mucho: ejecuta /usr/bin/login (con la ruta completa) de forma predeterminada, lo que invoca a tu shell predeterminado (nuevamente: definido con una ruta completa ) como shell de inicio de sesión interactivo (que a su vez leerá tanto .profile como .bashrc y le dejará con un $PATH en funcionamiento). Su problema es shells no interactivos , lo que no hace ninguno de los dos, no obtiene ninguna configuración de $PATH . Eso parece apuntar a que la configuración de la ruta por defecto de OS X ha sido de alguna manera superada.

Para verificar esto, ejecute cat /etc/paths . La salida debe ser (como mínimo)

/usr/bin
/bin
/usr/sbin
/sbin

(estos son los valores predeterminados en una instalación prístina de OS X). Si faltan los dos primeros, tiene su causa y una solución fácil:

mv /etc/paths /etc/paths.old # if you want to keep the current contents
def_paths=(/usr/bin /bin /usr/sbin /sbin)
for p in ${def_paths[@]}; do echo $p >> /etc/paths; done
cat /etc/paths.old >> /etc/paths # append previous contents

Tenga en cuenta que como /etc/paths es propiedad de root , tendrá que sudo su para que esto funcione.

    
respondido por el kopischke 14.05.2012 - 18:15
1

En OS X es launchd que establece la ruta inicial para todo, no para tus archivos de terminal.

Ahora, en una nota no relacionada, acabo de descubrir que en OS X

ps -E 

mostrará el entorno en el que se ha dado el proceso. Estoy seguro de que todos lo sabían, excepto yo, ¡pero estoy muy emocionado! ¿Por qué?

Porque ahora puedo proporcionar una respuesta parcial.

ps -EA

Le mostrará el entorno en el que se inició cada proceso, ya sea que dicho proceso tenga un terminal de control o no. Deberías ver

/usr/bin:/bin:/usr/sbin:/sbin

Que es lo que también debes obtener cuando escribes

/bin/launchctl getenv PATH

desde launchd establece la ruta de acceso. Es aquí donde reside su problema, siento, no en sus archivos de puntos. Puede encontrar útil leer la página del manual de environ(7) y path_helper(8) . Cuando el sistema funciona correctamente, todas las aplicaciones que ejecute deben tener el mismo entorno dado por launchd. El hecho de que Onyx esté funcionando mal significa que no es un problema de shell, sino más bien un problema del sistema.

Es muy importante que launchctl / launchd establezca la ruta correctamente.

    
respondido por el chiggsy 17.05.2013 - 09:40
1

No estoy seguro de cómo sucedió pero tu PATH se volvió loco, afortunadamente es una solución fácil. Ejecute lo siguiente en la Terminal (o iTerm) para solucionar el problema:

echo "export PATH=$PATH:/bin:/usr/bin" >> ~/.bashrc
source ~/.bashrc

Esto agregará /bin y /usr/bin al final de su PATH para esta y todas las futuras sesiones de terminal.

    
respondido por el Aaron Lake 14.05.2012 - 17:29
0

¿tienes un .bash_profile ? en la mia

$ cat bash_profile 

source ~/.bashrc
export PATH=$PATH:/opt/local/bin:/opt/local/sbin

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/julia:/usr/local/MacGPG2/bin:/usr/texbin:/opt/local/bin:/opt/local/sbin

(para macports a la ruta). Es lógico que puedas tener en .bash_profile la línea

export PATH=$PATH:/bin:/usr/bin

Y ver cómo va. Supongo que debes haber hecho algo muy serio en tu máquina, así que haz una copia de seguridad de tus archivos y prueba el software y también la solidez del hardware.

    
respondido por el user1256923 14.05.2012 - 18:00

Lea otras preguntas en las etiquetas