OK, maaf kalau ini sesuatu yang bodoh, tapi saya kehabisan ide.
Tujuan: tambahkan /usr/local/bin
ke$PATH
Masalah: $PATH
tidak akan melakukan apa yang saya inginkan atau harapkan
Bagaimana saya sampai di sini: Saya ingin mulai belajar memprogram, jadi saya merasa nyaman bermain-main di bawah tenda, tetapi tidak memiliki banyak pengalaman. Saya menginstal fish
shell (karena bersahabat!) Menggunakan homebrew
dan mengaturnya sebagai shell default saya (di bawah system prefs>users & groups>advanced
). Pada titik tertentu, saya berlari brew doctor
untuk melihat apakah instal saya semuanya halal, dan itu menyarankan saya pindah /usr/local/bin
ke depan $PATH
sehingga saya bisa menggunakan instalasi saya git
daripada salinan sistem. Baik - tetapi di antara path_helper
dan fish
, ada sesuatu yang terjadi di $PATH
luar kendali saya, dan saya tidak pernah bisa mengatur jalur yang benar.
Lingkungan: OSX 10.8.2, upgrade dari 10.7ish, dengan xcode
dan devtools diinstal, ditambah x11
, homebrew
danfish
Info lebih lanjut: Aku telah menetapkan saya pengguna shell default kembali ke bash
, dan mencoba berbagai kerang melalui terminal.app
- bash
, fish
, sh
. Saya pindah /usr/local/bin
ke atas /etc/paths
tetapi tidak mengubah apa pun. Saya melihat melalui berbagai config.fish
file dan berkomentar hal-hal yang mungkin mengacaukan $ PATH, tidak membantu. Saya memiliki file-file berikut di /etc/paths.d/
:
./10-homebrew
mengandung /usr/local/bin
./20-fish
mengandung /usr/local/Cellar/fish/1.23.1/bin
./40-XQuartz
mengandung /opt/X11/bin
Saya menambahkan set +x
ke saya profile
dan ketika saya mulai terminal.app
saya mendapatkan:
Last login: Mon Oct 1 13:31:06 on ttys000
+ '[' -x /usr/libexec/path_helper ']'
+ eval '/usr/libexec/path_helper -s'
++ /usr/libexec/path_helper -s PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/fish/1.23.1/bin:/opt/X11/bin";
export PATH;
+ '[' /bin/bash '!=' no ']'
+ '[' -r /etc/bashrc ']'
+ . /etc/bashrc
++ '[' -z '\s-\v\$ ' ']'
++ PS1='\h:\W \u\$ '
++ shopt -s checkwinsize
++ '[' Apple_Terminal == Apple_Terminal ']'
++ '[' -z '' ']'
++ PROMPT_COMMAND='update_terminal_cwd; '
++ update_terminal_cwd
++ local 'SEARCH= '
++ local REPLACE=%20
++ local PWD_URL=file://Chriss-iMac.local/Users/c4
++ printf '\e]7;%s\a' file://Chriss-iMac.local/Users/c4
Chriss-iMac:~ c4$
Jadi sepertinya path_helper berjalan, tetapi kemudian menjalankan echo $PATH
saya /usr/bin:/bin:/usr/sbin:/sbin
. Jadi, sepertinya path_helper
tidak melakukan apa yang seharusnya lagi?
Saya yakin ada beberapa perilaku yang didefinisikan dengan baik di sini yang saya tidak mengerti, atau saya borked sesuatu ketika mencoba memperbaikinya. Tolong bantu!
fish
dengan membuat~/.config/fish/config.fish
denganset PATH /usr/local/bin $PATH
tetapi saya masih memiliki masalah yangpath_helper
tampaknya tidak berfungsi seperti seharusnya, dan$PATH
dengan demikian menjadi tidak lengkap. Juga masih ada masalah berbeda$PATH
untuk skrip, aplikasi dimulai dari GUI, dll.Jawaban:
larutan:
pilih jika Anda ingin pengaturan sistem atau konfigurasi pengguna dan edit file konfigurasi yang sesuai, jangan gunakan path_helper dengan fish.
lebih
fish tidak sumber / etc / profile, untuk sistem dan konfigurasi pengguna akan membaca masing-masing /etc/fish/config.fish dan ~ / .config / fish / config.fish [1].
path_helper dimaksudkan untuk digunakan untuk shell yang mencari file profil lebar sistem (sh, csh dan turunannya). Karena 10.7 path_helper tampaknya menghormati ketertiban di / etc / paths, AFAIR tidak dalam 10.6 dan itu lebih sulit untuk diatasi.
Jika Anda benar-benar ingin menggunakan path_helper dengan ikan, Anda harus mengurai hasilnya karena hanya akan memberikan sintaks sh dan csh dengan opsi -s dan -c .
Sesuatu seperti
harus melakukan pekerjaan:
[1] http://ridiculousfish.com/shell/user_doc/html/index.html#initialization
sumber
if status --is-login eval (/usr/libexec/path_helper -c | sed -e 's/setenv/set -x/' -e 's/:/ /g' -e 's/[";]//g') end
- berfungsi dengan baik di sini dengan ikan 2 dan Mac OS 10.8.3Saya sama sekali tidak tahu tentang /etc/paths.d, path_helper, & c., Yang semuanya tampak seperti komplikasi yang berlebihan bagi saya, tetapi yang berikut di akhir ~ / .bashrc Anda seharusnya benar:
Semoga ini membantu!
sumber
path_helper
adalah utilitas khusus OSX yang seharusnya ditetapkan$PATH
saat masuk dengan membaca dari/etc/paths
dan kemudian/etc/paths.d/*
. Ngomong-ngomong, saya mengerti saran Anda harus membenahi sayabash
, tetapi saya benar-benar ingin itu bekerjafish
(dan secara konsisten di seluruh sistem, jika itu tidak terlalu banyak yang diharapkan).Terima kasih kepada Aaron untuk merespons dan untuk semua yang menjawab pertanyaan serupa lainnya di situs stackexchange. Demi anak cucu, inilah yang saya tahu:
path_helper
dipanggil dari/etc/profile
, oleh sintakseval '/usr/libexec/path_helper -s'
(di mana apostrof sebenarnya adalah backticks). Seperti boneka, saya tidak tahu bagaimana backtick bekerja, dan telah mengubah mereka menjadi tanda kutip untuk beberapa alasan. Ini mematahkan sayaprofile
dari memuatpath_helper
. Mengganti back-ticks dan sekarang berfungsi seperti seharusnya (tentu saja).set PATH /usr/local/bin $PATH
di saya~/.config/fish/profile.fish
memastikan bahwa saya mendapatkan urutan yang tepat di shell pilihan saya, tetapi selamapath_helper
berfungsi mungkin berlebihan.$PATH
tersebut tersedia untuk skrip, aplikasi GUI, dll., Tampaknya merupakan undian antaralaunchd.conf
danenvironment.plist
... masih meneliti yang itu.sumber