GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Benar Menambahkan Path To Path?

Saya ingin tahu di mana jalur baru harus ditambahkan ke PATH variabel lingkungan. Saya tahu ini dapat dicapai dengan mengedit .bashrc (misalnya), tetapi tidak jelas bagaimana melakukannya.

Dengan cara ini:

export PATH=~/opt/bin:$PATH

atau ini?

export PATH=$PATH:~/opt/bin

Jawaban yang Diterima:

Hal-hal sederhana

PATH=$PATH:~/opt/bin

atau

PATH=~/opt/bin:$PATH

tergantung pada apakah Anda ingin menambahkan ~/opt/bin di akhir (untuk dicari setelah semua direktori lain, jika ada program dengan nama yang sama di beberapa direktori) atau di awal (untuk dicari sebelum semua direktori lain).

Anda dapat menambahkan beberapa entri secara bersamaan. PATH=$PATH:~/opt/bin:~/opt/node/bin atau variasi pada pemesanan berfungsi dengan baik. Jangan masukkan export di awal baris karena memiliki komplikasi tambahan (lihat di bawah di bawah “Catatan tentang shell selain bash”).

Jika PATH . Anda dibangun oleh banyak komponen berbeda, Anda mungkin berakhir dengan entri duplikat. Lihat Bagaimana cara menambahkan jalur direktori home untuk ditemukan oleh Unix perintah mana? dan Hapus duplikat entri $PATH dengan perintah awk untuk menghindari penambahan atau penghapusan duplikat.

Beberapa distribusi secara otomatis menempatkan ~/bin di PATH Anda jika ada.

Di mana harus meletakkannya

Letakkan baris untuk mengubah PATH di ~/.profile , atau di ~/.bash_profile jika itu yang Anda miliki.

Perhatikan bahwa ~/.bash_rc tidak dibaca oleh program apapun, dan ~/.bashrc adalah file konfigurasi instance interaktif bash. Anda tidak boleh mendefinisikan variabel lingkungan di ~/.bashrc . Tempat yang tepat untuk mendefinisikan variabel lingkungan seperti PATH adalah ~/.profile (atau ~/.bash_profile jika Anda tidak peduli dengan shell selain bash). Lihat Apa perbedaan antara keduanya dan mana yang harus saya gunakan?

Jangan taruh di /etc/environment atau ~/.pam_environment :ini bukan file shell, Anda tidak dapat menggunakan substitusi seperti $PATH di sana. Dalam file ini, Anda hanya dapat mengganti variabel, tidak menambahkannya.

Potensi komplikasi di beberapa skrip sistem

Anda tidak perlu export jika variabel sudah ada di lingkungan:setiap perubahan nilai variabel tercermin di lingkungan.¹ PATH cukup banyak selalu di lingkungan; semua sistem unix mengaturnya sangat awal (biasanya dalam proses pertama, sebenarnya).

Saat login, Anda dapat mengandalkan PATH sudah ada di lingkungan, dan sudah berisi beberapa direktori sistem. Jika Anda menulis skrip yang mungkin dieksekusi lebih awal saat menyiapkan semacam lingkungan virtual, Anda mungkin perlu memastikan bahwa PATH tidak kosong dan diekspor:jika PATH masih belum disetel, maka sesuatu seperti PATH=$PATH:/some/directory akan menyetel PATH ke :/some/directory , dan komponen kosong di awal berarti direktori saat ini (seperti .:/some/directory ).

if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi

Catatan tentang shell selain bash

Di bash, ksh dan zsh, export adalah sintaks khusus, dan keduanya PATH=~/opt/bin:$PATH dan export PATH=~/opt/bin:$PATH melakukan hal yang benar bahkan. Di shell gaya Bourne/POSIX lainnya seperti tanda hubung (yaitu /bin/sh pada banyak sistem), export diuraikan sebagai perintah biasa, yang menyiratkan dua perbedaan:

  • ~ hanya diurai di awal kata, kecuali dalam tugas (lihat Bagaimana cara menambahkan jalur direktori home agar ditemukan oleh Unix perintah mana? untuk detailnya);
  • $PATH di luar tanda kutip ganda putus jika PATH berisi spasi atau [*? .

Jadi di shell seperti dash, export PATH=~/opt/bin:$PATH set PATH ke string literal ~/opt/bin/: diikuti dengan nilai PATH hingga ruang pertama. PATH=~/opt/bin:$PATH (tugas kosong) tidak memerlukan tanda kutip dan melakukan hal yang benar. Jika Anda ingin menggunakan export dalam skrip portabel, Anda perlu menulis export PATH="$HOME/opt/bin:$PATH" , atau PATH=~/opt/bin:$PATH; export PATH (atau PATH=$HOME/opt/bin:$PATH; export PATH untuk portabilitas bahkan ke shell Bourne yang tidak menerima export var=value dan tidak melakukan ekspansi tilde).

Terkait:Centos – Mengapa versi baru Node.js yang benar tidak diinstal pada CentOS 7?

¹ Ini tidak benar dalam cangkang Bourne (seperti pada cangkang Bourne yang sebenarnya, bukan cangkang bergaya POSIX modern), tetapi Anda sangat tidak mungkin menemukan cangkang tua seperti itu akhir-akhir ini.


Linux
  1. Cara Menambahkan Direktori ke PATH di Linux [Dengan Contoh]

  2. Bagaimana saya bisa menambahkan dir ke $PATH di Makefile?

  3. Cara mengekspor DBUS_SESSION_BUS_ADDRESS

  1. Bagaimana cara menambahkan repositori Yum

  2. Cara Menambahkan Banyak Host di phpMyAdmin

  3. Bagaimana cara menambahkan direktori tertentu ke jalur pencarian updatedb (locate)?

  1. Bagaimana cara menambahkan pengguna ke grup di Linux

  2. Bagaimana Cara Menambahkan Ke $path dengan Bersih?

  3. Linux – Ldd Tidak Menemukan Path, Bagaimana Cara Menambahkannya?