Tengo un problema reproducible:
- configurar mi RUTA en Bash .profile
- iniciar tmux por
tmux
,tmux attach
o cualquier variante - echo $ PATH y míralo con los mismos componentes pero en diferente orden
¿Cómo detener esto? ¿Qué lo explica?
Tengo un problema reproducible:
tmux
, tmux attach
o cualquier variante¿Cómo detener esto? ¿Qué lo explica?
Respuestas:
Si está en una Mac y se ha estado preguntando por qué /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
sigue prefiriéndose a PATH cuando ejecuta tmux, es debido a una utilidad llamada path_helper que se ejecuta desde su /etc/profile
archivo.
No puede persuadir fácilmente a tmux (o mejor dicho, bash) para que no /etc/profile
lo haga (por alguna razón, tmux siempre se ejecuta como un shell de inicio de sesión, lo que significa que se leerá / etc / profile), pero puede asegurarse de que los efectos de path_helper no No jodas con tu RUTA.
El truco es asegurarse de que PATH esté vacío antes de que se ejecute path_helper. En mi ~/.bash_profile
archivo tengo esto:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Borrar la RUTA antes de que se ejecute path_helper evitará que anteponga la RUTA predeterminada a su RUTA (previamente) elegida, y permitirá que el resto de sus scripts de configuración de bash personal (comandos más abajo .bash_profile
, o .bashrc
si lo ha obtenido .bash_profile
) para configurar su RUTA en consecuencia.
Espero que tenga sentido ...
-f
con -e
, pero no me gustaría probar personalmente y la fuente de un archivo de un script que se ejecute cuando me conecto a menos que yo había comprobado que estaba allí. Sin embargo, tiendo a reutilizar mi script bash en muchas máquinas diferentes (y sistemas operativos), así que me gusta asegurarme de que sean a prueba de balas. Me imagino que algunas otras variantes de Unix podrían llamarlo de otra manera.
~/.bash_profile
cordura trajo de vuelta a mi feliz mundo tmux.
set -g default-command "${SHELL}"
en .tmux.conf
las fuerzas TMux usar conchas de no ingreso. No veo el punto en esos de todos modos, ya que generalmente abres tmux después de que ya has iniciado sesión.
No; ordenar $PATH
sería una locura, ya que muchos sistemas dependen de su orden establecido por el usuario.
Sin embargo, tmux qué empezar su shell en el modo de "inicio de sesión", causando ~/.profile
que obtenerse de nuevo . Esto significa que si tiene algo como PATH=/my/dir:/another/dir:$PATH
en ese archivo, se volverá a hacer , lo que dará como resultado $ PATH /my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Para evitar esto, puede usar otra variable para verificar:
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
if [ -n "$TMUX" ]
cláusula, pero me preguntaba: ¿qué tan importante es[ -f /etc/profile ]
realmente? ¿No es seguro asumir que/etc/profile
siempre es un archivo normal?