Saya memiliki pemahaman dasar tentang bagaimana $ PATH dapat diatur, tetapi apakah ada dokumentasi yang sepenuhnya menjelaskan di mana Mac OS mendapatkan semua jalur yang ditambahkan ke $ PATH? Saya mengetahui hal-hal seperti /etc/profile
,, /etc/paths
dan /etc/profile.d
, tetapi apakah ada skrip lain yang akhirnya mempengaruhi nilai $ PATH? Saya juga tidak begitu akrab antara non-login, dan shell login ( .bashrc
, .bash_profile
), tapi saya menyadari perbedaan mendasar.
/etc/profile
skrip ini terutama digunakan oleh bash? Saya tidak memiliki pengalaman dengan cangkang lain, tetapi saya berasumsi mereka mengikuti struktur yang berbeda?/etc/profile
digunakan oleh sebagian besar (semua? Tidak 100% yakin) kerang. Itu sebabnya itu adalah pilihan yang baik untuk meletakkan segala sesuatu yang Anda inginkan di mana-mana, seperti PATH. Bash membaca.bash_
file sementara Zsh misalnya membaca.zshrc
selain yang lain. Itu tergantung pada shell.path_helper
ini tidak disebut kerang non-login interaktif (atau kerang non-interaktif). Ini sebenarnya disebut shell login interaktif/etc/profile
.Path di
/etc/paths
dan/etc/paths.d/*
biasanya ditambahkanPATH
oleh path_helper .path_helper
dijalankan dari/etc/profile
, jadi dijalankan ketika bash dipanggil sebagai shell login interaktif, tetapi tidak ketika bash dipanggil sebagai shell non-login atau shell non-interaktif./etc/paths
berisi/usr/local/bin
di akhir secara default, dan/etc/paths.d/
kosong secara default.Terminal dan iTerm 2 membuka shell baru sebagai shell login secara default, dan shell dibuka ketika Anda ssh ke komputer Anda juga merupakan shell login. Banyak emulator terminal pada platform lain
tmux
,, dan mode shell di Emacs membuka shell baru sebagai shell non-login.Saya telah menambahkan baris ini ke
/etc/launchd.conf
:setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Ini mengubah nilai
PATH
dari proses root launchd. Nilai ini diwarisi oleh semua proses lainnya, termasuk proses peluncuran per pengguna. Anda dapat menerapkan perubahan/etc/launchd.conf
dengan memulai ulang, atau dengan menjalankanlaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
dan meluncurkan kembali proses.Pada OS X,
~/.profile
tidak dibaca ketika Anda masuk secara grafis. Jika keduanya~/.bash_profile
dan~/.profile
ada, bash tidak membaca~/.profile
.~/.MacOSX/environment.plist
berhenti bekerja di 10.8.sumber