Bagaimana saya bisa membuat program dapat dieksekusi dari mana saja


76

Apa yang harus saya lakukan jika saya ingin dapat menjalankan program yang diberikan terlepas dari direktori saya saat ini? Haruskah saya membuat tautan simbolis ke program di /binfolder?


5
tidak, Anda harus menggunakan variabel PATH shell.
msw

7
Saya pikir tidak apa-apa untuk membuat ~/bin/folder pribadi , menambahkan ITU ke jalur Anda, dan membuat symlink di folder itu untuk apa pun yang Anda ingin dapat dieksekusi dari mana saja.
frabjous

1
Anda juga dapat mengatur alias dengan path lengkap ke biner yang ingin Anda jalankan.
datamurf

Jawaban:


53

Jika Anda cukup mengetik export PATH=$PATH:</path/to/file>di baris perintah, itu hanya akan berlangsung selama sesi.

Jika Anda ingin mengubahnya secara permanen, tambahkan export PATH=$PATH:</path/to/file>ke file ~ / .bashrc Anda (hanya di bagian akhir tidak masalah).


11
Terima kasih itu berhasil. Untuk pemula seperti saya, ingatlah untuk menghilangkan kurung sudut <>. Seperti itu: $ PATH: / file / path / Anda
SAm

4
Juga jangan menyertakan nama file program itu sendiri di path.
Olli Niemitalo

23

Jawaban singkatnya adalah bahwa untuk menjalankan program, apa pun direktori Anda, Anda harus memiliki direktori program di jalur pencarian Anda. Masalahnya dapat diselesaikan dengan menempatkan program ke folder yang sudah ada di jalur itu, atau dengan menambahkan folder baru ke jalur - keduanya akan berfungsi. Jawaban terbaik tergantung pada:

Apakah program ini adalah program yang diunduh yang telah Anda kompilasi sendiri dari sumbernya?

Kemungkinan besar sudah memiliki mekanisme instalasi. Di folder yang Anda kompilasi program, sebagai root, jalankan 'make install'

Apakah program ini adalah program yang diunduh yang ingin Anda sediakan sebagai bagian dari program standar di komputer?

Masuk akal untuk menempatkan aplikasi semacam ini ke dalam folder standar. cukup umum untuk menggunakan direktori seperti / usr / local / bin untuk program semacam itu. Anda akan memerlukan akses root untuk melakukan ini.

Ini adalah program yang Anda tulis untuk diri sendiri dan / atau Anda tidak memiliki hak istimewa di komputer.

Membuat folder di direktori home Anda disebut 'bin', dan menempatkan program di sana. Anda mungkin perlu mengedit skrip login Anda untuk menambahkan path lengkap ke folder ini (mis. / Usr / home / jeremy / bin)

Sementara Anda bisa menambahkan direktori saat ini ke jalur pencarian, Anda harus terus melakukan ini dengan setiap program baru - dan lebih banyak pekerjaan dalam jangka panjang.


15

Menempatkan tautan ke file di /bindirektori bukanlah hal terbaik untuk dilakukan karena berbagai alasan.

  • Jika file yang dapat dieksekusi sebenarnya berada di lokasi yang tidak dapat dilihat atau dieksekusi oleh beberapa pengguna, mereka melihatnya sebagai tautan buruk atau program yang tidak berfungsi.
  • The /bindirektori seharusnya disediakan untuk program-program yang dibutuhkan untuk menjalankan sistem (hal-hal seperti chmod, mkdir, dll).

Anda benar-benar dapat menempatkan (menginstal) file yang dapat dieksekusi di /usr/bin/atau bahkan /usr/local/bin/. Tentu saja, Anda telah menginstal program secara manual pada saat itu; distribusi Anda tidak akan melacaknya seperti halnya sisa program Anda - Anda harus memutakhirkannya secara manual bila perlu dan menghapusnya secara manual jika Anda menginginkannya hilang. Anda juga harus tahu paket apa yang bergantung (sepertinya Anda sudah menggunakan program ini, jadi itu sudah diatasi, tetapi secara umum ...).

Kecuali saya membuat program yang saya harapkan akan digunakan pengguna lain, itu bukan yang biasa saya lakukan: Saya membuat direktori bin hanya untuk saya di direktori rumah saya, dan saya mengedit profil shell saya untuk menambah variabel lingkungan ~/bin/saya PATH. Saya merasa lebih mudah untuk melacak program yang saya instal dengan cara itu, karena dipisahkan dari sistem lainnya.


6

Jika Anda ingin menjalankan perintah foodi direktori tempat shell Anda saat ini, pada dasarnya Anda memiliki dua opsi:

  1. Ketik ./foopada prompt shell.

  2. Tambahkan .direktori ( .adalah nama untuk "direktori saat ini") ke PATHvariabel lingkungan; bagaimana Anda melakukan ini tergantung pada shell yang Anda gunakan:

    • untuk jenis kerang Bourne (bash, zsh, ksh, dll.) yang Anda tulis (lihat halaman ini untuk informasi lebih lanjut):

      export PATH=$PATH:.
      
    • untuk jenis kerang csh (tcsh, csh) yang Anda tulis (lihat halaman ini untuk informasi lebih lanjut):

      set path = ( $path .)
      

Perhatikan bahwa 2. adalah risiko keamanan pada sistem multi-pengguna: bayangkan Anda cdke direktori /tmpdan pengguna jahat telah membuat biner malware bernama lsdi sana ..


2
ya, saya pikir opsi menunjukkan kepada Anda bahwa unix mari Anda melakukan sesuatu, yang dianggap praktik buruk. Menambahkan. ke jalan Anda juga dapat membuat efek samping lain yang umumnya buruk.
The Unix Janitor

1

Bercak dengan PATHmembuka Anda hingga menjalankan program jahat secara tidak sengaja. Standar adalah untuk menginstal "lokal" barang-barang di bawah /usr/local(lihat FHS , yang mengkodifikasi penggunaan Unix: sedikit tanggal tetapi memberikan alasan)., /usr/local/binBiasanya berlaku PATHuntuk semua pengguna.

Program-program saya yang "diinstal secara lokal" sudah ada $HOME/bin, diatur dalam tarian standar oleh ./configure --prefix=$HOME ..., ditambah dengan beberapa alias (bash) untuk memilih misalnya git yang dibangun sendiri di atas sistem yang satu (yang tidak berbenturan ditemukan di bagian PATHpaling akhir.

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.