Tambahkan biner ke jalur saya


15

Saya memiliki executable. Saya ingin mengeksekusi terminal yang dapat dieksekusi dengan nama hanya seperti perintah lainnya.

Saya dapat dimasukkan ke dalam executable saya /usr/local/binatau saya bisa menambahkan nya PATHke ~/.bashrc. Keduanya akan bekerja.

Apa yang lebih baik Apakah ada perbedaan?

Jawaban:


12

Sebagai contoh, izinkan saya berasumsi, Anda memiliki executable myscript. Anda perlu menjalankannya dari terminal sebagai,

/path/to/myscript

Perubahan tingkat pengguna

Jika Anda menambahkan PATHexecutable itu ke ~/.bashrc, Anda dapat menjalankan executable dengan nama hanya dari mana saja ( Avinash Raj sudah disebutkan), seperti

myscript

Tetapi perubahan akan terpengaruh di tingkat pengguna . Itu berarti jika Anda memiliki pengguna lain, mereka tidak dapat mengakses executable dengan nama saja. Jika mereka memiliki izin yang tepat, mereka perlu menjalankan executable seperti,

/path/to/myscript

Selain itu, Anda tidak akan dapat menjalankan skrip sebagai sudo karena tidak di PATH-root, Untuk dijalankan seperti yang sudoAnda butuhkan,

sudo /path/to/myscript

perubahan tingkat sistem

Jika Anda memasukkan skrip Anda di /usr/local/bindalamnya dapat diakses sistem yang luas dan untuk semua pengguna. Dalam hal ini setiap pengguna dapat menjalankan executable Anda sebagai (tunduk pada memiliki izin yang tepat)

myscript

Dalam hal ini Anda dapat menjalankan executable sudojuga,

sudo myscript

Sekarang pilih satu cara tergantung pada kebutuhan Anda.


2

Menambahkan lokasi file ke $PATHvariabel Anda di ~/.bashrcfile Anda hanya akan memungkinkan Anda untuk mengeksekusi dari lokasi mana pun, sedangkan memasukkannya /usr/bin/akan memungkinkan semua pengguna di sistem Anda untuk mengeksekusi file itu dari lokasi apa pun.

Mengapa demikian? Karena, ~/.bashrcfile Anda hanya dapat dilihat oleh Anda sebagai pengguna. Jadi semua perubahan variabel yang dilakukan terbatas pada Anda. Sedangkan, menambahkan file itu /usr/binakan memungkinkan file tetap ada untuk semua pengguna dan karena /usr/binada dalam $PATHvariabel kecuali seseorang menghapusnya, akan memungkinkan semua pengguna untuk mengeksekusinya dari lokasi mana pun.


1

Jika Anda meletakkan file yang dapat dieksekusi di /usr/binatau /usr/local/bin, maka Anda akan dapat menjalankan program itu dengan hanya menentukan nama ( your-programbukan /usr/local/bin/your-program).

Jika Anda malah menambahkan direktori yang berisi program ke ~/.bashrcfile ke PATH, maka file yang dapat dieksekusi yang ada di direktori itu dapat diluncurkan dengan hanya mengetikkan namanya.


1
Informasi ini salah, Anda masih dapat meluncurkan executable bahkan jika Anda tidak berada di "direktori itu".
Lekensteyn

Bagaimana ini salah ?, tolong jelaskan sedikit lebih banyak.
Avinash Raj

1
Ok, saya kesulitan membaca jawaban Anda (dan dengan demikian membuat kesalahan) jadi saya mengeditnya untuk menghilangkan kebingungan dan mengirim ulang downvote. Semoga bermanfaat.
Lekensteyn

Jadi, pertanyaannya adalah: Apa yang lebih baik? Apakah ada perbedaan? Anda praktis tidak mengatakan apa-apa selain OP.
Radu Rădeanu

Saya menjawab untuk pertanyaan OS tetapi tidak dalam format singkat.
Avinash Raj

0

Sama seperti pelengkap jawaban @souravc ...

Untuk "Perubahan Tingkat Pengguna", alih-alih mengedit ~/.bashrcfile, Anda cukup membuat direktori $HOME/bin/dan menempatkan skrip Anda di sana.

Direktori akan ditambahkan secara otomatis ke PATH(setidaknya sejak Ubuntu 12.04) yang berarti Anda akan dapat menjalankan semua skrip / executable di dalam direktori itu dengan sederhana:

myscript

Hanya 2 sen saya. :)

PS- Saya mencoba memposting ini sebagai komentar untuk jawaban @souravc, tetapi saya tidak memiliki reputasi yang cukup. :-(

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.