Si vous êtes sur un Mac et que vous vous demandez pourquoi /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
continue d'être ajouté à PATH lorsque vous exécutez tmux, c'est à cause d'un utilitaire appelé path_helper qui est exécuté à partir de votre /etc/profile
fichier.
Vous ne pouvez pas facilement persuader tmux (ou plutôt bash) de ne pas source /etc/profile
(pour une raison quelconque, tmux s'exécute toujours comme un shell de connexion, ce qui signifie que / etc / profile sera lu), mais vous pouvez vous assurer que les effets de path_helper ne ne vis pas avec votre PATH.
L'astuce consiste à s'assurer que PATH est vide avant l'exécution de path_helper. Dans mon ~/.bash_profile
dossier, j'ai ceci:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
La suppression de PATH avant l'exécution de path_helper l'empêchera d'ajouter le PATH par défaut à votre PATH (précédemment) choisi et permettra au reste de vos scripts de configuration bash personnels (commandes plus bas .bash_profile
, ou .bashrc
si vous l'avez obtenu .bash_profile
) de configurer votre CHEMIN en conséquence.
J'espère que cela a du sens ...
if [ -n "$TMUX" ]
clause, mais je me demandais - dans quelle mesure est-ce[ -f /etc/profile ]
vraiment important? N'est-il pas sûr de supposer qu'il/etc/profile
s'agit toujours d'un fichier normal?-f
par-e
, mais je n'essaierais pas personnellement de récupérer un fichier à partir d'un script qui s'exécute lorsque je me connecte, sauf si je l'ai vérifié. Cependant, j'ai tendance à réutiliser mon script bash sur de nombreuses machines (et systèmes d'exploitation) différents, donc j'aime m'assurer qu'ils sont à l'épreuve des balles. Je peux imaginer que d'autres variantes d'Unix pourraient l'appeler autrement.~/.bash_profile
je mettais ce petit extrait au sommet de ma santé mentale dans mon monde tmux heureux.set -g default-command "${SHELL}"
dans les.tmux.conf
forces Tmux utiliser des coquilles non-connexion. Je ne vois pas l'intérêt de ceux-ci de toute façon, car vous ouvrez habituellement tmux après vous être déjà connecté.Non; le tri
$PATH
serait une chose trop folle à faire, car de nombreux systèmes dépendent de son ordre défini par l'utilisateur.Cependant, tmux ne démarrer votre shell en mode « connexion », ce qui
~/.profile
doit être source de nouveau . Cela signifie que si vous avez quelque chose commePATH=/my/dir:/another/dir:$PATH
dans ce fichier, cela sera fait à nouveau , résultant en $ PATH contenant/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Pour éviter cela, vous pouvez utiliser une autre variable pour vérifier:la source
@Graham Ashton Merci pour votre idée
Ma suggestion serait que vous mettiez
à votre fichier .zshrc en haut de celui-ci.
ASSUREZ-VOUS que votre
est inférieure à.
la source