
Ringkasan
-
Linux menjalankan sebagian besar perintah dari Direktori Bin yang disimpan dalam variabel jalur Anda.
-
Menambahkan direktori saat ini ke jalur Anda bisa berisiko karena potensi pembajakan atau kesalahan ketik.
-
Anda dapat menambahkan direktori saat ini ke jalur Anda di file startup seperti .bashrc.
Banyak yang terjadi di belakang layar saat Anda menjalankan program Linux. Variabel jalur dapat membuat ini lebih nyaman, tetapi Anda perlu menggunakannya dengan hati -hati.
Apa yang terjadi saat saya menjalankan perintah?
Saat Anda menjalankan perintah di terminal Anda, Linux melakukan beberapa cek untuk memutuskan bagaimana bertindak. Ini dapat mendeteksi bahwa Anda menjalankan alias, dalam hal ini akan mengganti apa yang Anda ketik dengan perintah lain. Ini mungkin mengenali nama fungsi shell, yang kemudian berjalan untuk dijalankan. Atau perintah Anda dapat dibangun ke dalam shell itu sendiri.
Namun, dalam kebanyakan kasus, perintah yang Anda ketik adalah nama file, baik biner yang dapat dieksekusi atau skrip dalam bahasa yang ditafsirkan. File -file ini biasanya ada di direktori nampan, seringkali salah satu dari:
-
/bin
-
/SBIN
-
/usr/bin
-
/usr/lokal/bin
Anda dapat mengetik jalur program, baik relatif atau absolut, dan shell Anda akan menjalankannya. Misalnya:
/bin/ls -l *.md/usr/bin/date
Namun, ini tidak terlalu nyaman, jadi Linux menggunakan jalan pintas yang disebut variabel lingkungan jalur. Ini adalah satu set direktori yang akan dicari Linux untuk menemukan file ketika mencoba menjalankan perintah. Di sistem saya, jalan saya terlihat seperti ini:
Ini berarti, jika saya mencoba menjalankan perintah yang disebut “Program,” Linux akan mencari file AT/USR/LOCAL/SBIN/program untuk dijalankan. Jika file itu tidak ada, itu akan mencari file A/usr/lokal/bin/program, dan sebagainya.
Di jalan, direktori dipisahkan oleh karakter usus besar (:) dan Anda dapat mencantumkannya dalam bentuk yang lebih mudah dibaca menggunakan tr:

Terkait
Cara mengatur variabel lingkungan di bash di linux
Cara yang bagus untuk menghemat waktu.
Jadi, mengingat bahwa ada file yang dapat dieksekusi bernama “LS” di direktori /bin, yang ada di variabel jalur, mengetik ls akan menyebabkan shell menjalankan program di /bin /ls.
Anda mungkin berharap dapat menjalankan program di direktori Anda saat ini, terutama jika Anda datang ke Linux dari MS-DOS. Tetapi jalur Anda mungkin tidak termasuk direktori Anda saat ini secara default, jadi Anda tidak akan dapat melakukannya hanya dengan mengetik nama perintah.
Ini sedikit berlawanan dengan intuisi karena Anda terbiasa dengan perintah lain yang beroperasi pada file di direktori kerja Anda hanya menggunakan nama mereka. Misalnya, perintah seperti ls readme.md Akan mencantumkan file readme.md di direktori Anda saat ini, jika ada.
Ini adalah kasus yang sama sekali berbeda untuk menjalankan program di direktori Anda saat ini. Melewati perintah LS nama file menyerahkan tanggung jawab untuk program itu. Program LS kemudian memeriksa argumen baris perintah, mengenalinya sebagai nama file di direktori saat ini, dan mencantumkannya.
Jadi mengapa tidak. di jalan saya?
Bukankah lebih bagus jika Anda bisa menjalankan program di direktori Anda saat ini tanpa harus mengetikkan nama path mereka setiap kali? Ini bukan terlalu banyak overhead, tetapi jika Anda menulis program atau skrip Anda sendiri, Anda bisa menjalankannya dari waktu ke waktu, jadi setiap penghematan efisiensi tampak seperti hal yang baik.
Meskipun mungkin tampak ajaib, cukup menambahkan simbol direktori saat ini ke jalan Anda akan memungkinkan Anda melakukan hal itu:
Ini tampaknya lebih baik daripada tidak bisa menjalankan perintah di direktori kerja Anda, jadi mengapa itu bukan default? Saya telah bekerja dengan sistem sebelum di mana itu adalah default, tetapi ini tidak universal – karena alasan yang bagus.
Sebagai permulaan, menambahkan direktori kerja Anda ke awal jalur Anda dapat mengakibatkan program lain membajak perintah standar. Ambil contoh ini:
Dalam hal ini, Anda akan mengharapkan program Find Standard – yang kebetulan berada di /usr /bin pada sistem saya – untuk menjalankan dan mendaftar semua file C di bawah /TMP. Tapi /TMP adalah direktori bersama; Bagaimana jika pengguna lain membuat file yang dapat dieksekusi di direktori itu dan menamainya “temukan”?
Dalam hal ini, Anda secara tidak sengaja menjalankan program orang lain di bawah akun pengguna Anda sendiri – resep potensial untuk bencana!
Selalu ada risiko ketika Anda menjalankan perintah hanya menggunakan namanya karena Anda tidak yakin apa yang sebenarnya akan dilakukan shell Anda. Tetapi menambahkan direktori saat ini ke jalur Anda meningkatkan risiko ini. Anda telah mengubah satu set lokasi yang terkenal dan mungkin aman menjadi satu dengan lokasi variabel yang berpotensi tidak aman.
Anda dapat membantu mengurangi risiko ini dengan menambahkan direktori saat ini ke ujung jalan Anda sebagai gantinya:
Sekarang, bahkan dengan program Find di direktori kerja Anda, shell Anda akan mengambil yang dapat dieksekusi di /usr /bin dan menjalankannya sebagai gantinya. Ini sedikit lebih aman, tetapi membalikkan masalahnya kembali: Jika Anda sedang mengerjakan program bernama Find di direktori lokal Anda, Anda harus menjalankannya dengan mengetik ./menemukan setiap kali. Anda telah mendapatkan sedikit kenyamanan, tetapi tidak dapat diprediksi.
Alasan lain untuk disimpan. Keluar dari jalan Anda serupa: mudah untuk menyebabkan masalah dengan kesalahan ketik. Bayangkan Anda mencoba menjalankan perintah LS tetapi secara tidak sengaja tipe KS sebagai gantinya dan ada program KS di direktori Anda saat ini. Menjalankan program harus dapat diprediksi. Berkat lokasi yang relatif terkendali dengan baik yang biasanya ada di jalur Anda, Anda jarang menjalankan apa pun yang tidak Anda inginkan.
Bagaimana cara menambahkan direktori saya saat ini ke jalan saya?
Dengan pemahaman penuh tentang risiko dan manfaat, Anda dapat memutuskan Anda masih menginginkan direktori kerja Anda di jalan Anda. Tidak apa -apa, asalkan Anda berhati -hati dan Anda tahu apa yang Anda hadapi.
Anda ingin mengatur jalur Anda secara permanen dalam file startup seperti .bashrc, .profile, atau .zshrc. File yang tepat akan tergantung pada lingkungan Anda, tetapi ~/.bashrc mungkin merupakan lokasi yang paling umum.
Edit file yang sesuai dan tambahkan baris seperti ini:
export PATH=$PATH:.
Ini menambahkan direktori Anda saat ini ke ujung jalan Anda, jadi program di /bin dan lokasi umum lainnya masih akan berjalan terlebih dahulu. Jika Anda ingin direktori Anda saat ini diprioritaskan, tambahkan di awal:
export PATH=.:$PATH

Terkait
Cara menambahkan direktori ke jalur $ Anda di linux
Jangan menambahkan semuanya ke jalan Anda. Dengan serius.
Dan bagaimana cara menjalankan program di direktori saya saat ini?
Jika Anda memilih untuk tidak menambahkan direktori Anda saat ini ke jalur, jangan khawatir; Anda masih dapat menjalankan program apa pun di sistem file Anda, selama Anda memiliki izin.
Katakanlah Anda memiliki program di suatu tempat di folder rumah Anda, seperti:
/Users/bobby/repos/cloc/cloc
Karena tidak ada di direktori jalur, Anda tidak akan dapat menjalankannya hanya dengan mengetik namanya:
Sebaliknya, cukup berikan jalur – baik absolut atau kerabat – ke file yang dapat dieksekusi ini:
Menggunakan jalur ke perintah alih -alih namanya akan melewati pencarian jalur apa pun. Pastikan untuk selalu memeriksa bahwa Anda menjalankan program yang menurut Anda.
Versi kedua ini menggunakan karakter periode (“.”) Untuk mewakili direktori saat ini. Setelah shell memperluasnya, perintah ini akan setara dengan versi path penuh. Tapi “.” akan selalu relatif terhadap direktori kerja Anda saat ini.