Di mana saya harus menyimpan aplikasi command line?

46

Ketika saya mengunduh aplikasi baris perintah, mereka berada di ~/Downloads/direktori saya . Tapi saya merasa ini adalah tempat yang salah untuk memiliki aplikasi baris perintah. Di mana di sistem file Mac OS X saya harus menyimpan aplikasi baris perintah?

/Applications/juga terasa salah, lebih untuk aplikasi desktop. Dan /bin/terdengar lebih untuk aplikasi milik OS X.

Jonas
sumber
Saya setuju dengan sentimen Anda bahwa meletakkan segala sesuatu langsung di / bin atau / Aplikasi pada umumnya bentuk yang buruk. Jawaban Patrix adalah lokasi paling kanonik yang pernah saya lihat untuk penyimpanan baris perintah umum dari program dan skrip.
bmike
2
Saya tidak melihat ini sebagai duplikat karena pertanyaan terkait tampaknya lebih tentang menyulap beberapa pilihan pihak ketiga dan ini lebih murni - ke mana perginya aplikasi yang saya unduh secara manual.
bmike

Jawaban:

44

Karena OS X berasal dari warisan unix, Anda ingin menyimpan file sistem /usr/local/binuntuk aplikasi baris perintah dan skrip yang menjadi milik sistem secara lokal dan bukan untuk pengguna tertentu. Anda mungkin perlu membuat direktori ini terlebih dahulu dengan menjalankan:

sudo mkdir -p /usr/local/bin

Anda dapat memindahkan aplikasi baris perintah apa pun ke folder itu dengan menjalankan:

sudo mv my-binary /usr/local/bin/

Untuk memastikan itu /usr/local/binadalah bagian dari jalur pencarian standar Anda di Terminal, periksa konten /etc/pathsdan tambahkan jika perlu:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Beberapa pengguna membuat direktori kedua untuk skrip level pengguna, tetapi ini lebih tergantung pada preferensi pribadi.

Saya biasanya membuat direktori bin di setiap folder pengguna dan kemudian menyembunyikannya dari Finder - tetapi Anda dapat membuat keputusan sendiri apakah Anda ingin menyembunyikannya:

 mkdir ~/bin
 chflags hidden ~/bin

Dalam hal ini, Anda ingin setiap jalur pengguna memasukkan lokasi ini dengan memodifikasi skrip startup shell ( ~/.bash_profileuntuk bash yang merupakan shell standar)

 export PATH=$PATH:~/bin

atau dengan mengkodekan jalur ke setiap aplikasi saat Anda menjalankannya.

nohillside
sumber
3
Ini benar-benar saran terbaik, dan yang akan saya berikan kepada siapa pun yang bertanya. Saya hanya akan menambahkan 2 hal: 1) /etc/launchd.conf mungkin juga merupakan tempat di mana path perlu ditambahkan, 2) walaupun saya menggunakan / usr / local / untuk utilitas Unix diinstal melalui homebrewuntuk skrip shell saya sendiri. punya ~ / Dropbox / bin / yang saya juga tambahkan ke $ PATH saya jadi saya punya semua skrip shell khusus di semua Mac saya. Tapi saya melakukan itu selain / usr / local / bin / bukan sebagai gantinya.
TJ Luoma
/ usr / local / bin adalah tempat UNIX tradisional untuk skrip pengguna, yang memberikan akses ke pengguna lain pada sistem. Menempatkan skrip di sana akan menempatkan skrip di $ PATH semua pengguna dengan mudah. Tapi saya percaya cara Mac , karena sebagian besar Mac memiliki satu pengguna, adalah membuat ~/bindirektori, membuatnya tidak terlihat chflags uchg ~/bin, dan menambahkannya ke pengguna ~/.bash_profileuntuk menjadikannya bagian dari pengguna $ PATH. ~/binadalah lokasi yang unggul untuk keamanan dan migrasi. Jika tidak, Anda harus ingat tentang hal-hal yang Anda tinggalkan di / usr / local / bin. Dan ln -s ~/bin ~/Dropbox/juga bagus.
chillin
7

Pertimbangkan untuk membuat /optdirektori, yang merupakan lokasi lain yang akan ditampilkan oleh perangkat lunak Unix khusus.

Matt Stephenson
sumber
5
/opt/sangat berguna untuk aplikasi lengkap sedangkan /usr/local/bin/lebih tepat untuk skrip baris perintah mandiri. Seringkali lebih disukai untuk digunakan /opt/dalam kasus di mana kumpulan skrip terkait bertindak sebagai perpustakaan (misalnya, /opt/myscriptslib/bin/).
plasmid87
Terima kasih atas saran Anda. Saya pribadi membuat folder / opt / untuk meletakkan perangkat lunak saya dan kemudian saya baru saja membuat tautan simbolis ke / usr / local / bin untuk semua file yang dapat dieksekusi ... maka tidak perlu menambahkan / opt / myspecific-soft dalam variabel lingkungan path .
рüффп