it-swarm.asia

Mac OS X: tempat konvensional di mana file biner harus hidup

Saya telah mengunduh aplikasi yang merupakan aplikasi baris perintah, dan ingin meletakkannya di suatu tempat di mana saya dapat menjalankannya dari baris perintah tanpa harus mengetikkan lintasan secara eksplisit.

  1. Apa jalur konvensional yang digunakan untuk sesuatu seperti ini? /usr/bin? Apakah ada opsi berbeda, satu jika saya menginginkannya untuk semua pengguna, dan satu jika saya menginginkannya hanya untuk pengguna tertentu, seperti akun administrator saya?

  2. Atau haruskah saya meletakkannya di direktori sendiri di bawah direktori Aplikasi, dan menambahkannya ke jalur? Jika demikian, file mana yang mengontrol di mana jalur ditetapkan?

55
Jason S

Inti jawabannya: Anda mungkin ingin /usr/local/bin. Bergantung pada seberapa baru macOS Anda, Anda mungkin perlu memperbarui $PATH default Anda. Lihat di bawah untuk rincian lebih lanjut.

UPDATE 12-01-2018 Pada beberapa titik sejak saya menulis jawaban asli saya, Apple mengubah $PATH defaultnya. Akibatnya, banyak yang saya katakan di bawah ini tidak relevan dengan Mac baru-baru ini. Jika Anda mengetik echo $PATH di terminal, dan /usr/local/bin adalah yang pertama, maka Anda dapat mengabaikan semua hal di bawah ini tentang mengubah $PATH Anda.

Jawaban asli

Mac tidak biasa dalam hal ini. Variabel $PATH default untuk pengguna biasa terlihat seperti ini:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Dengan meletakkan /usr/local/bin setelah /usr/bin dan /bin, Mac membatalkan sistem yang biasa. Biasanya, Anda dapat memasukkan sesuatu ke /usr/local/bin (katakanlah penerjemah Perl kedua, dikompilasi dalam beberapa cara non-standar), dan kemudian pengguna biasa akan menekan yang kustom daripada yang di seluruh sistem terlebih dahulu. Ini bagus. Pengguna bisa mendapatkan varian, tetapi sistemnya tetap murni. Namun, mengingat $PATH default Apple, item dalam /usr/bin atau /bin akan ditemukan sebelum apa pun di /usr/local/bin. (Ini pada dasarnya mengalahkan tujuan pemasangan, mis., Custom Perl di /usr/local/bin.)

Untuk memperbaikinya, Anda dapat mengubah $PATH pengguna biasa dengan mengedit file .profile di direktori home pengguna. (File itu mungkin tidak ada, jika Anda memiliki instalasi baru. Dalam hal ini, buatlah.)

Semi-related: Homebrew menyediakan manajemen paket yang sangat baik untuk Mac. Secara default, Homebrew menginstal perangkat lunak ke /usr/local, tetapi ia melakukannya dengan cara yang membuatnya sangat mudah untuk menghapus hal-hal dan kembali ke status Vanilla nanti.

47
Telemachus

/usr/local/bin dan /usr/local/sbin layak ditambahkan ke jalur Anda, karena banyak makefile untuk build sumber secara default dipasang di sana.

Jika Anda menggunakan MacPorts , ada baiknya menambahkan /opt/local/bin dan /opt/local/sbin juga.

Cara terbaik untuk melakukan ini adalah menambahkan

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

ke file .bashrc di direktori home Anda (yang disembunyikan, jadi CLI adalah cara terbaik untuk melakukan ini), atau, jika Anda ingin mengubah jalur lebar sistem, tambahkan baris yang sama ke /etc/bashrc (tidak disembunyikan), tetapi Anda perlu Sudo untuk melakukan ini.

Jika Anda tidak memiliki .bashrc di rumah pengguna mana pun, Anda dapat membuatnya dan menambahkan baris ini ke dalamnya, tetapi ingatlah untuk mengubah izin pada file yang Anda buat agar dapat dibaca oleh pengguna yang bersangkutan (jelas tidak relevan jika Anda sedang melakukannya untuk profil Anda sendiri).

$PATH di akhir menambahkan path default sistem untuk apa pun yang Anda masukkan sebelumnya. Perhatikan bahwa sistem mencari binari sesuai urutan lintasan yang diberikan, jadi jika Anda menginstal biner di /usr/local atau /opt/local yang juga diinstal secara default pada sistem, versi yang Anda instal akan ditemukan terlebih dahulu, yang dapat (walaupun jarang) mengecewakan sesuatu. Perlu diperhatikan.

Informasi yang baik adalah di sini .

Saya harus mencatat bahwa di atas mengasumsikan Anda menggunakan Bash untuk Shell, yang merupakan default pada Mac OS X v10.4 (Tiger) dan Mac OS X v10.5 (Leopard), tetapi tidak pada sistem sebelumnya, yang menggunakan tcsh sebagai gantinya, yang memiliki sintaks yang berbeda.

Saya harap itu membantu...

9
avstrallen

Saya cenderung menggunakan /usr/local. Inilah penjelasan yang bagus mengapa , yang mengacu pada Filesystem Hierarchy Standard (FHS) . ⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢ ⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, yang pada gilirannya mengatakan tentang /usr/local:

Hirarki tersier untuk data lokal, khusus untuk Host ini. Biasanya memiliki subdirektori lebih lanjut, mis., Bin, lib, bagikan.⁢

7
John Topley