Bagaimana cara mengubah versi default dari executable unix?

3

Saat ini saya memiliki dua versi dari executable yang sama diinstal pada mesin OSX saya: satu duduk di usr / bin, dan yang lainnya adalah instalasi Macports. Ketika saya menjalankan which, terminal mengembalikan lokasi ke versi usr / bin. Apakah ada cara yang seragam untuk mengubah instalasi default, atau apakah setiap aplikasi memiliki opsi perintah sendiri untuk ini?

Jepang
sumber

Jawaban:

7

Anda perlu memodifikasi PATHvariabel lingkungan. Ini adalah standar yang digunakan untuk mencari executable di bawah Unix.

Ketika sesuatu di Unix mencari aplikasi yang diberikan dengan jalur relatif (misalnya: clangdaripada /usr/bin/clang), PATHdibagi pada :karakter, dan kemudian dicari secara berurutan.

misalnya: jika Anda PATHadalah /opt/local/bin:/bin:/usr/binkemudian clangakan mencari /opt/local/bin/clang, dan jika itu hilang, /bin/clangdll

Secara teknis, setiap proses memiliki cara mereka sendiri untuk melakukan hal ini - tidak ada yang memaksa mereka untuk mengikuti konvensi penggunaan $PATH, tetapi sudah cukup lama bahwa hampir semua yang dilakukan.

Pertimbangan lainnya adalah bahwa setiap proses memiliki lingkungannya sendiri - salinannya PATHtermasuk di dalamnya . Itu termasuk launchd, yang bertanggung jawab untuk UI dan aplikasi apa pun yang diluncurkan darinya.

Jadi, Anda dapat mengubah ini dalam skrip shell init Anda ( .bash_profile, .bashrc, .profile, dll), tapi itu tidak akan bekerja jika, misalnya, Anda memulai vim atau emacs sebagai aplikasi GUI.

Anda juga dapat memodifikasi /etc/paths, atau menambahkan file /etc/paths.d, dan itu akan menjadi bagian dari lingkungan standar untuk semuanya - termasuk setiap aplikasi yang diluncurkan pada Mac. (Anda harus logout dan kembali agar dapat menyerap setiap bagian dari sistem.)

Daniel Pittman
sumber
Untuk menambah jawaban Daniel: MacPort seharusnya menambahkan pernyataan ekspor di file .profile atau .bash_profile Anda - Akan terlihat seperti ini. export PATH=/opt/local/bin:/opt/local/sbin:$PATHJika baris itu tidak ada di sana, tambahkan dan mulai ulang terminal. Anda juga dapat mengetik echo $PATHuntuk melihat apa yang saat ini diatur dalam shell Anda.
InChargeOfIT
Saya mendapatkan konsep $ PATH, tetapi ini tidak benar-benar menjawab pertanyaan saya, yang membuat saya bertanya-tanya apakah itu sesat untuk memulai dengan: .profile saya sekarang terlihat seperti ini: export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:$PATH:/usr/local/git/bin. Namun, misalnya, instalasi dentang default di usr / bin. Tidak jelas bagi saya bagaimana memaksa instalasi Macports menjadi default.
nipponese
Oh Saya memperbarui jawaban untuk mencerminkan bagaimana PATH dicari dalam praktik, tetapi: letakkan direktori yang berisi executable yang Anda sukai sebelumnya di PATH. Selain itu, tidak ada konsep aplikasi "default" di tingkat Unix seperti di tingkat UI OSX. Hanya "apa pun yang ada di jalur".
Daniel Pittman
2

Jika memodifikasi $PATHtidak layak untuk alasan apa pun, Anda dapat membuat alias yang memanggil executable di direktori yang sesuai.

Ignacio Vazquez-Abrams
sumber
0

The PATHvariabel mendefinisikan mana perintah-Mu.

Anda dapat memodifikasi variabel ini di /etc/pathsfile Anda . Anda harus memverifikasi itu /usr/binsebelum orang lain.

Gilles Quenot
sumber