Apa variabel Unix PATH dan bagaimana cara menambahkannya?

11

Banyak tutorial pemrograman meminta pengguna untuk menambahkan sesuatu ke mereka PATHtetapi tidak menjelaskan apa itu. Sumber daya yang ada yang menjelaskan PATHkepada pengguna yang baru ke baris perintah tidak terlalu baik.

  • Apa PATHvariabel Unix ?

  • Saya baru saja mengunduh sebuah program, kemudian mencoba menjalankan perintah di terminal dan mendapatkannya command not found. Apa hubungannya ini dengan PATH?

  • Saya menambahkan sesuatu PATHdengan perintah ini dan kemudian semuanya bekerja:

    export PATH=/path/to/some/bin:$PATH
    

    ... tapi kemudian saya dapatkan command not foundlagi saat berikutnya saya memulai komputer saya. Bagaimana saya bisa membuatnya tetap PATHsetiap kali saya membuka Terminal?

  • Apa cara terbaik untuk menentukan apakah suatu program seperti Git atau gccsudah dimuat di komputer saya?

Kevin Burke
sumber
3
Saya telah membaca banyak jawaban di SO dan saya belum menemukan jawaban yang menjawab setiap pertanyaan ini dengan cara yang bisa dipahami oleh seorang pemula. Saya ingin sesuatu yang dapat saya tautkan dengan pengguna baris perintah baru. Itu adalah harapan saya untuk menambahkan ini sebagai komunitas wiki dan melampirkan hadiah yang signifikan.
Kevin Burke
4
Saya yakin saya dapat menemukan 50 hit jika saya mencari google untuk pertanyaan ini. Kenapa kamu tidak bisa?
trojanfoe
2
Dan jika tidak ada tautan yang mengarah ke SO untuk pertanyaan yang memenuhi syarat untuk berada di sini, maka itu harus ditambahkan di sini. Kami ingin SO berada di tempat Google menuju pertanyaan pemrograman.
Silakan lihat posting MSO ini untuk motivasi Kevin dalam mengajukan pertanyaan ini. Kemungkinan besar dia akan mengedit untuk menjelaskan bagaimana informasi ini berguna.
jmort253
1
@ jmort253: Ya, dia harus mulai melakukannya dengan cepat. 4/5 suara dekat. Saya tidak akan menutup karena saya tahu ingin mengedit pertanyaan, tetapi dia lebih baik membuatnya cepat.
Hantu Madara

Jawaban:

17

Jalur UNIX adalah variabel lingkungan yang merupakan daftar direktori tempat Anda mencari program yang ingin Anda jalankan. Ini memungkinkan Anda untuk menghindari keharusan menggunakan pathname lengkap untuk menjalankan hal-hal seperti /bin/ls(misalnya dengan meletakkan /bindi jalur).

Misalnya, jalur dapat terdiri dari:

/bin:/usr/bin:/usr/sbin

dan itu berarti, ketika Anda mengetikkan perintah xyzzy, itu akan mencoba menjalankan file pertama yang ditemukannya dari daftar saat ini:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

(Ini dapat melewati file yang tidak dapat dieksekusi jika sedang pintar).

Anda dapat menambahkan hal-hal ke jalan dengan perintah seperti:

set PATH=/directory/to/add:$PATH:/low/priority/path

yang ditempatkan /directory/to/adddi awal daftar pencarian jalur, dan /low/priority/pathdi akhir.

Namun, ini biasanya hanya perubahan untuk shell saat ini . Jika Anda ingin membuat perubahan di setiap shell, Anda harus menambahkan baris itu ke salah satu file startup Anda, seperti $HOME/.profileatau /etc/profile. File yang benar untuk digunakan tergantung pada shell Anda sendiri dan bagaimana Anda mengatur file startup. Tidak selalu mudah untuk mengetahui ke mana harus pergi tetapi aturan umumnya dijelaskan di halaman manual untuk shell apa pun yang Anda gunakan.

Anda biasanya dapat menemukan perintah di jalur dengan salah satu dari:

which cmd
whence cmd

untuk menemukan cmdexecutable. Misalnya, pada sistem Debian saya, saya mendapatkan transkrip berikut:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

sumber
1
Apakah pertanyaan ini termasuk dalam stackoverflow?
trojanfoe
@trojanfoe, sebanyak pertanyaan terkait shell tidak, ya, saya akan berpikir begitu. Ini adalah juga bahasa pemrograman.
Saya memodifikasi jawaban untuk digunakan :sebagai pemisah, seperti yang digunakan pada * nix. Penggunaan Windows ;(mungkin karena :sudah memiliki arti dalam C:).
Joachim Sauer
Sebenarnya, @ Joachim, mungkin lebih tepat untuk mengatakan bahwa shell yang diberikan (daripada UNIX itu sendiri) memiliki pemisah direktori tertentu tetapi Anda tepat untuk semua yang saya gunakan dari atas kepala saya. Terima kasih atas perbaikannya, tepuk tangan.
@paxdiablo: ya, saya memikirkan hal itu tetapi saya juga tidak bisa memikirkan shell unix yang tidak digunakan :(di Jawa, misalnya path.separatorselalu :di * nix).
Joachim Sauer
5

Apa yang?

Variabel lingkungan PATH adalah daftar direktori yang dipisahkan oleh titik dua yang dicari shell Anda saat Anda memasukkan perintah.

Bagaimana cara mengaturnya?

PATH=$PATH:/your/directory
export PATH

Bagaimana saya bisa membuatnya tetap di PATH setiap kali saya membuka Terminal?

Masukkan dua baris sebelumnya di dalam ~/.bash_profile(jika Anda menggunakan bashuntuk Terminal).

Pigueiras
sumber
3

PATH adalah variabel lingkungan untuk sistem seperti unix.

setel jalur:

export PATH=$PATH:<your path>

setel tidak disetel:

unset $PATH

mengatur jalur secara permanen

di folder rumah Anda, aktifkan Lihat -> Tampilkan File Tersembunyi .... pena .bash_profile file, sebelum mengekspor baris PATH, tambahkan baris ini .....

PATH=$PATH:<yourpath>

logout dan login lagi ...... periksa apakah ini berfungsi ... baik! itu harus bekerja .....

Shantanu Banerjee
sumber
1
Maaf untuk downvote, tapi ini tidak diformat dan diutarakan dengan benar. Cobalah untuk menghindari penggunaan huruf ellipsis ("...") yang berlebihan, dan tulis kalimat lengkap. Itu akan membantu menghindari downvotes seperti itu di masa depan.
Joachim Sauer
1
@ Joachim Sauer, mengapa Anda tidak mengedit jawabannya? Mengapa Anda memilih untuk downvote?
1
@MikroDel: karena sudah ada jawaban yang lebih baik, berkualitas lebih tinggi untuk pertanyaan ini dan downvoting membutuhkan lebih sedikit usaha. Jika ini adalah satu-satunya jawaban, saya mungkin akan mengeditnya. Juga: meskipun biasanya tidak menyenangkan, downvotes adalah alat yang sah (ya, ada panah naik dan turun di sebelah setiap pertanyaan / jawaban).
Joachim Sauer
1
sunting atau poskan komentar ini dalam waktu yang hampir bersamaan, tetapi sunting membuatnya lebih baik, dan bantu Shantanu Banerjee dan pengguna lain
@MikroDel: jadi menjelaskan alasan di balik downvote tidak membantu pengguna? Saya pikir saya sudah cukup jelas pada alasan saya dan telah memberikan tips praktis untuk meningkatkan kualitas. Satu-satunya hal desakan Anda adalah mengurangi kemauan saya untuk menjelaskan downvotes saya (dan seperti yang Anda lihat di profil saya, saya tidak downvote berlebihan).
Joachim Sauer