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?
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 ...
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?-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 comoPATH=/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:fuente
@Graham Ashton Gracias por tu idea
Mi sugerencia sería que pongas
en su archivo .zshrc en la parte superior de la misma.
ASEGÚRESE de que su
Esta abajo.
fuente