Wenn Sie auf einem Mac arbeiten und sich gefragt haben, warum /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
PATH beim Ausführen von tmux immer wieder vorangestellt wird, liegt dies an einem Dienstprogramm namens path_helper, das in Ihrer /etc/profile
Datei ausgeführt wird.
Sie können tmux (oder besser gesagt bash) nicht einfach davon überzeugen, keine Quelle zu verwenden /etc/profile
(aus irgendeinem Grund wird tmux immer als Anmeldeshell ausgeführt, was bedeutet, dass / etc / profile gelesen wird), aber Sie können sicherstellen, dass die Auswirkungen von path_helper nicht zutreffen Schrauben Sie nicht mit Ihrem Pfad.
Der Trick besteht darin, sicherzustellen, dass PATH leer ist, bevor path_helper ausgeführt wird. In meiner ~/.bash_profile
Datei habe ich Folgendes:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Durch das Löschen von PATH vor der Ausführung von path_helper wird verhindert, dass der Standard-PATH dem (zuvor) ausgewählten PATH vorangestellt wird, und der Rest Ihrer persönlichen Bash-Setup-Skripte (Befehle weiter unten .bash_profile
oder in, .bashrc
wenn Sie ihn bezogen haben .bash_profile
) kann eingerichtet werden PFAD entsprechend.
Hoffe das macht Sinn ...
if [ -n "$TMUX" ]
Klausel versteckt , aber ich habe mich gefragt - wie wichtig ist das[ -f /etc/profile ]
wirklich? Ist es nicht sicher anzunehmen, dass/etc/profile
es sich immer um eine reguläre Datei handelt?-f
mit-e
, aber ich würde eine Datei nicht persönlich versuchen und Quelle von einem Skript , das ausgeführt wird , wenn ich mich anmelden , wenn ich es war geprüft würde. Ich neige jedoch dazu, mein Bash-Skript auf vielen verschiedenen Computern (und Betriebssystemen) wiederzuverwenden, daher möchte ich sicherstellen, dass sie kugelsicher sind. Ich kann mir vorstellen, dass einige andere Unix-Varianten es etwas anderes nennen könnten.~/.bash_profile
auf meine geistige Gesundheit zurück in meine glückliche tmux-Welt.set -g default-command "${SHELL}"
in.tmux.conf
Kräften tmux Nicht-Login - Shells zu verwenden. Ich sehe den Punkt in diesen sowieso nicht, da Sie normalerweise tmux öffnen, nachdem Sie sich bereits angemeldet haben.Nein; Das Sortieren
$PATH
wäre zu verrückt, da viele Systeme von der vom Benutzer festgelegten Reihenfolge abhängen.Allerdings tmux hat Shell in „Login“ -Modus starten, verursacht
~/.profile
werden sourced wieder . Dies bedeutet, dass wenn Sie so etwasPATH=/my/dir:/another/dir:$PATH
in dieser Datei haben, es erneut ausgeführt wird , was dazu führt, dass $ PATH enthält/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Um dies zu vermeiden, können Sie eine andere Variable verwenden, um Folgendes zu überprüfen:quelle
@ Abraham Ashton Danke für deine Idee
Mein Vorschlag wäre, dass Sie setzen
in Ihrer .zshrc-Datei oben.
Stellen Sie sicher, dass Ihre
ist unterhalb.
quelle