Di mana saya harus meletakkan skrip bash saya

15

Saya memiliki beberapa skrip bash yang sangat sederhana yang saya buat bersama untuk hal-hal yang saya lakukan secara teratur. Salah satunya adalah menjalankan duplikasi untuk melakukan tugas cadangan saya. Tidak ada yang pintar hanya sekelompok jika .. maka pernyataan benar-benar. Karena ini perlu dijalankan sebagai sudo apakah itu praktik terbaik untuk meletakkan skrip saya di / usr / bin (atau lokasi lain di PATH), chown to root.root dan chmod ke 700?

tukang topi
sumber
Saya akan mengatakan gunakan gituntuk mengontrol versi skrip Anda, letakkan salinan lokal dari git repo di tempat yang Anda sukai ~, dan kemudian symlink skrip ke dalamnya ~/bin.
edwinksl
Maksudmu gitseperti di githubdalam awan?
WinEunuuchs2Unix
2
@ WinEunuuchs2Unix Jika Anda ingin skrip Anda tersedia untuk pengguna lain, Anda harus memasukkannya /usr/local/bin. Kalau tidak, saya akan mengatakan hanya memasukkan mereka ~/bin. Skrip Anda sendiri di kedua direktori harus aman saat Anda meningkatkan.
edwinksl
2
Seperti di atas, letakkan di / usr / local / bin. Pastikan nama skrip Anda unik & bukan perintah linux / nama biner yang ada. Saya sendiri hanya menambahkan nomor di akhir skrip apa pun yang saya buat karena saya belum melihat nama-nama linux yang sudah ada diakhiri dengan angka. (tidak untuk mengatakan beberapa yang benar-benar tidak jelas mungkin ...
doug
1
@edwinksl Hampir setahun kemudian saya harus mengatakan bahwa ~/binini adalah tempat terbaik untuk sebagian besar skrip karena Anda tidak harus menggunakan sudountuk mengeditnya seperti yang Anda lakukan ketika disimpan /usr/local/bin.
WinEunuuchs2Unix

Jawaban:

3

Saya menyimpan skrip saya sendiri di /opt/scripts.

Jika skrip Anda dapat dieksekusi oleh setiap pengguna sistem, Anda dapat membuat tautan simbolis /usr/bin.

Jika hanya root yang harus menjalankan skrip, Anda dapat membuat tautan simbolis /usr/sbin.

Perintah untuk menambahkan tautan simbolis di /usr/bin/:

ln -s /opt/scripts/<script> /usr/bin/

Anda dapat menjalankan skrip, karena /usr/bin/secara default ada di PATH Anda .

SynPrime
sumber
1
Saya akan merekomendasikan bahwa alih-alih menggunakan /usr/binsebagai target untuk skrip shell pengguna / lokal - yaitu /usr/local/bin(atau /opt/bin) sesuai standar hirarki Filesystem - Wiki Debian untuk menghindari konflik (sebagian besar waktu, Anda ingin agar skrip yang disediakan Ubuntu diutamakan).
shalomb
Pada kebanyakan sistem /usr/local/binmenimpa /usr/bin, seperti yang terjadi kemudian di jalan. Ini sengaja, karena sistem tidak meletakkan file di sana, sehingga Anda dapat meletakkan file di sana, yang HARUS menimpa sistem yang disediakan.
allo
Saya menandai ini sebagai jawaban yang benar, meskipun kedua jawaban itu tampaknya baik-baik saja. Alasannya adalah, saya eneded melihat pada dokumen FHS dan pergi dengan pemahaman bahwa / memilih ada untuk tujuan ini. Saya suka ide mereka hanya menghubungkan ke skrip saya di / usr / local / bin. Terima kasih untuk semua petunjuknya.
Hatterman
17

Jika tidak ada pengguna lain selain Anda menggunakan skrip ini:

Kemudian Anda bisa menyimpannya /home/$USER/bin. Buat binfolder jika tidak ada dan pindahkan file ke sana. Folder bin di rumah Anda secara otomatis akan ditambahkan ke variabel lingkungan PATH. Kode tersebut ada di .profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Lihat Bagaimana cara menambahkan / home / nama pengguna / bin ke $ PATH?

Atau di beberapa sistem mungkin di .bashrc:

export PATH=${HOME}/bin/:${HOME}/.local/bin:${PATH}

Terima kasih Penatua Geek

Jika skrip ini digunakan oleh pengguna lain:

Maka salah satu /usr/local/binatau /opt/binopsi yang baik. Lihat Apakah ada tempat standar untuk menempatkan skrip Linux khusus?

Semoga ini membantu

pengguna68186
sumber
3

Saya memiliki direktori yang saya gunakan untuk koleksi cepat alat lokal saya atau hal-hal yang saya gunakan di berbagai komputer di /usr/local/apollo . Ada cabang dari direktori ini untuk flags, bindan logs.

Untuk aplikasi yang saya unduh dan instal di luar default apt-get repositori ditempatkan di /opt/dan direktori dengan nama aplikasi, dengan satu lagi sub-direktori untuk versi spesifik aplikasi. Dengan cara ini versi aplikasi saya yang dikompilasi suka vlcatau eclipsetidak akan bertentangan dengan versi yang didistribusikan.

Penggunaan saya /optpada dasarnya dirancang secara resmi.

By the way direktori /usr/local/bin, /usr/local/apollodan /optsurvives versi OS instalasi menimpa segar.

LD James
sumber
1
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binSaya suka faktanya /usr/local/binsudah di jalan satu hal yang kurang untuk diingat. Saya suka metode Anda, /opt/program/versionsaya bisa menggunakannya untuk hal-hal Kernel yang saya dapatkan dan kompilasi seperti EnhanceIO di mana mereka mengubah hal-hal antara versi kernel. Apakah /apollomoon landing favorit pribadi atau apakah itu memiliki makna Ubuntu?
WinEunuuchs2Unix
Apa perbedaan antara /usr/local/bindan usr/local/sbinsedemikian rupa sehingga yang terakhir nuked selama upgrade?
WinEunuuchs2Unix
Penginstal Nukes direktori yang digunakannya. Ini dengan mudah membuat /usr/localdirektori, tetapi tidak memasukkan apa pun di dalamnya. Direktori-direktori tersebut diisi oleh pengguna. Banyak program sumber di luar repositori memberi pengguna pilihan untuk memilih ke mana mereka ingin menginstal. Default dalam file konfigurasi adalah /usr/local/bin. Jadi karena seberapa umum menggunakan direktori-direktori itu, mereka secara default dimasukkan dalam jalur pengguna. Secara default sistem memeriksa ~/bin dan menambahkannya ke jalur jika ada.
LD James
Maksud Anda sistem memeriksa ~/binselama instalasi atau setiap boot? Apa perbedaan antara sbindan bin? Mereka tampaknya hidup berdampingan harus ada quasi-rules yang Anda pilih berdasarkan jenis program bukan?
WinEunuuchs2Unix
1
@ WinEunuuchs2Unix Di ~/binjalan ... itu tidak ditambahkan selama instalasi. Sistem memeriksa untuk itu pada setiap login dan menambahkannya ke $ PATH jika ada selama login. Lihatlah dua baris terakhir dari ~/.profilepengaturan Anda .
LD James