Mam powtarzalny problem:
- skonfiguruj moją ŚCIEŻKĘ w Bash .profile
- rozpocząć tmux przez
tmux
,tmux attach
lub dowolnego wariantu - echo $ PATH i zobacz to z tymi samymi komponentami, ale w innej kolejności
Jak to zatrzymać? Co to wyjaśnia?
Jeśli korzystasz z komputera Mac i zastanawiasz się, dlaczego /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
ciągle uruchamiasz PATH po uruchomieniu tmux, dzieje się tak z powodu narzędzia o nazwie ścieżka_pomoc, które jest uruchamiane z Twojego /etc/profile
pliku.
Nie możesz łatwo przekonać tmuxa (a raczej basha) do braku źródła /etc/profile
(z jakiegoś powodu tmux zawsze działa jako powłoka logowania, co oznacza, że / etc / profil zostanie odczytany), ale możesz się upewnić, że efekty path_helper don wkręć swoją ŚCIEŻKĘ.
Sztuczka polega na upewnieniu się, że ŚCIEŻKA jest pusta przed uruchomieniem path_helper. W moim ~/.bash_profile
pliku mam to:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Wyczyszczenie ŚCIEŻKI przed wykonaniem path_helper zapobiegnie przygotowaniu domyślnej ŚCIEŻKI do (poprzednio) ŚCIEŻKI i pozwoli pozostałym osobistym skryptom instalacyjnym bash (polecenia znajdujące się niżej .bash_profile
lub w .bashrc
przypadku, gdy je pozyskałeś .bash_profile
) na skonfigurowanie twojego ŚCIEŻKA odpowiednio.
Mam nadzieję, że to ma sens ...
if [ -n "$TMUX" ]
klauzulą, ale zastanawiałem się - jak ważne jest to[ -f /etc/profile ]
naprawdę? Czy nie jest bezpiecznie zakładać, że/etc/profile
zawsze jest to zwykły plik?-f
z-e
, ale nie osobiście spróbować źródło pliku ze skryptu, który pobiera prowadzonym kiedy się zalogować, chyba bym sprawdził to było. Jednak często używam skryptu bash na wielu różnych komputerach (i systemach operacyjnych), więc chcę się upewnić, że są one kuloodporne. Mogę sobie wyobrazić, że niektóre inne warianty unix mogą to nazwać czymś innym.~/.bash_profile
krótkiego fragmentu na szczycie mojego zdrowia psychicznego przywróciło mój szczęśliwy świat tmux.set -g default-command "${SHELL}"
w.tmux.conf
siłach tmux używać pocisków bez logowania. I tak nie widzę sensu, ponieważ zwykle otwierasz tmux po zalogowaniu się.Nie; sortowanie
$PATH
byłoby zbyt szaloną rzeczą, ponieważ wiele systemów zależy od kolejności ustawionej przez użytkownika.Jednak tmux ma uruchomić powłokę w trybie „login”, powodując
~/.profile
być pozyskiwane ponownie . Oznacza to, że jeśli masz coś takiegoPATH=/my/dir:/another/dir:$PATH
w tym pliku, zostanie to zrobione ponownie , co spowoduje dodanie $ PATH/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Aby tego uniknąć, możesz użyć innej zmiennej do sprawdzenia:źródło
@Graham Ashton Dzięki za pomysł
Moją sugestią byłoby, że umieściłeś
w pliku .zshrc u góry.
UPEWNIJ SIĘ, że twój
jest poniżej.
źródło