Ketika saya mengkompilasi egxc dengan:
GCC x.c -o x
Untuk menjalankan hasil, saya harus menulis:
./x
Dan cukup mengetik:
x
Gagal dengan pesan ini:
x: perintah tidak ditemukan
Ini berarti Linux tidak mencari direktori saat ini untuk itu! Apakah ada (saya yakin ada) masalah yang masuk akal di balik perilaku ini?
Jawaban:
Karena secara default, direktori kerja saat ini tidak dalam
PATH
variabel.Ini adalah langkah keamanan / kenyamanan. Jika Anda memiliki binari / skrip bernama eg
cd
,,ls
dll di direktori kerja Anda saat ini, akan sangat menjengkelkan jika dijalankan secara default.sumber
cd
dibash
, dijalankan internal rutin untuk bash dan tidak/bin/cd
) kecuali Anda tambahkan dengan `.`sl
, Anda punya masalah yang sama. Hanya direktori tepercaya yang harus ada$PATH
dan jalur relatif seperti.
tidak pernah merupakan direktori tepercaya untuk shell interaktif.rm -r target
ketika saya maksudkanrm -f target
biasanya tidak ada perbedaan. Jika saya mengetikrm -f target
ketika saya maksudkanrm -r target
, tidak ada perbedaan atau penghapusan gagal total. Selain itu, saya pikir setiap kali sebelum saya mengetikrm
, terutama jika saya menambahkan-f
atau-r
atau bola - itu adalah perintah yang berbahaya berdasarkan sifatnya. Tidak ada yang berpikir sebelumls
.Ini berarti bahwa direktori saat ini tidak dalam variabel $ PATH.
sumber
Anda dapat memperbaikinya dengan menambahkan direktori saat ini (diwakili oleh satu titik) ke
PATH
variabel lingkungan.Cara melakukannya tergantung pada shell yang Anda gunakan.
jika Anda menggunakan bash, Anda dapat menambahkan baris
export PATH=$PATH:.
ke.bashrc
file di direktori home Anda.jika Anda menggunakan csh atau tcsh tambahkan baris
set PATH = ($PATH .)
ke file .cshrc di direktori home Anda.IMHO, untuk komputer desktop rumah ini adalah hal yang dapat diterima untuk dilakukan - keamanan bijaksana.
sumber