Jika Anda menggunakan Mac dan bertanya-tanya mengapa /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
terus ditambahkan ke PATH ketika Anda menjalankan tmux, itu karena sebuah utilitas bernama path_helper yang dijalankan dari /etc/profile
file Anda .
Anda tidak dapat dengan mudah membujuk tmux (atau lebih tepatnya, bash) untuk tidak sumber /etc/profile
(untuk beberapa alasan tmux selalu berjalan sebagai shell login, yang berarti / etc / profile akan dibaca), tetapi Anda dapat memastikan bahwa efek dari path_helper don bisa mengacaukan dengan PATH Anda.
Caranya adalah memastikan PATH kosong sebelum path_helper berjalan. Dalam ~/.bash_profile
file saya, saya punya ini:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Mengosongkan PATH sebelum path_helper dijalankan akan mencegahnya dari prapeletakan PATH default ke PATH yang Anda pilih sebelumnya, dan akan memungkinkan sisa skrip pengaturan bash pribadi Anda (perintah lebih jauh ke bawah .bash_profile
, atau .bashrc
jika Anda berasal dari .bash_profile
) untuk mengatur Anda PATH sesuai.
Harapan itu masuk akal ...
if [ -n "$TMUX" ]
klausa sendiri, tetapi saya bertanya-tanya - seberapa pentingkah[ -f /etc/profile ]
sebenarnya? Bukankah aman untuk menganggap bahwa/etc/profile
itu selalu file biasa?-f
dengan nyaman-e
, tetapi saya tidak akan secara pribadi mencoba dan mengambil file dari skrip yang dijalankan ketika saya login kecuali saya telah memeriksanya. Saya cenderung menggunakan kembali skrip bash saya pada banyak mesin yang berbeda (dan sistem operasi), jadi saya ingin memastikan mereka buktinya. Saya bisa membayangkan beberapa varian unix lain mungkin menyebutnya sesuatu yang lain.~/.bash_profile
kewarasananku membawa kembali ke dunia tmux-ku yang bahagia.set -g default-command "${SHELL}"
di.tmux.conf
pasukan tmux menggunakan kerang non-login. Saya tidak mengerti maksudnya, karena Anda biasanya membuka tmux setelah Anda masuk.Tidak; pengurutan
$PATH
akan menjadi hal yang terlalu gila untuk dilakukan, karena banyak sistem bergantung pada urutan penggunanya.Namun, tmux tidak memulai shell Anda dalam mode "login", menyebabkan
~/.profile
bersumber lagi . Ini berarti bahwa jika Anda memiliki sesuatu sepertiPATH=/my/dir:/another/dir:$PATH
dalam file itu , itu akan dilakukan lagi , menghasilkan $ PATH yang mengandung/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Untuk menghindari ini, Anda bisa menggunakan variabel lain untuk memeriksa:sumber
@ Grey Ashton Terima kasih atas ide Anda
Saran saya adalah agar Anda menempatkan
di file .zshrc Anda di atasnya.
PASTIKAN itu milik Anda
di bawah.
sumber