it-swarm-id.com

Bagaimana saya bisa membuat program dapat dieksekusi dari mana saja

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 /bin folder?

79
aneuryzm

Jika Anda cukup mengetik export PATH=$PATH:</path/to/file> pada 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).

55
oadams

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 program yang diunduh yang telah Anda kompilasi sendiri dari sumber?

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

Apakah program ini merupakan 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 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.

24
Michael Shaw

Menempatkan tautan ke file di /bin direktori bukan 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.
  • /bin direktori seharusnya dicadangkan untuk program yang diperlukan untuk menjalankan sistem (hal-hal seperti chmod, mkdir, dll).

Anda sebenarnya 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. Selain itu, Anda harus tahu paket apa yang bergantung (sepertinya Anda sudah menggunakan program, jadi itu sudah diatasi, tetapi secara umum ...).

Kecuali saya membuat program yang saya harapkan akan digunakan oleh 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 menambahkan ~/bin/ to PATH saya variabel lingkungan. Saya merasa lebih mudah untuk melacak program yang telah saya instal seperti itu, karena dipisahkan dari sistem lainnya.

17
Shawn J. Goff

Jika Anda ingin menjalankan perintah foo di direktori tempat Shell Anda berada, Anda pada dasarnya memiliki dua opsi:

  1. Tipe ./foo di Shell Prompt.

  2. Tambahkan . direktori (. adalah nama untuk "direktori saat ini") ke variabel lingkungan PATH; 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 cd ke direktori /tmp dan pengguna jahat telah membuat biner malware bernama ls di sana ..

6
Riccardo Murri

Mengobrol dengan PATH membuat Anda tidak sengaja menjalankan program jahat. Standar adalah menginstal barang "lokal" di bawah /usr/local (lihat FHS , yang mengodifikasi penggunaan Unix: sedikit bertanggal tetapi memberikan alasan)., /usr/local/bin biasanya di PATH untuk semua pengguna.

Program "terinstal secara lokal" saya ada di $HOME/bin, diatur dalam tarian standar oleh ./configure --prefix=$HOME ..., ditambah dengan beberapa alias (bash) untuk memilih, mis. self-built git di atas sistem satu (yang tidak berbenturan ditemukan di PATH di akhir.

1
vonbrand