Bash, selalu periksa $ PWD sebagai bagian dari path?

15

Latar Belakang: Salah satu kolega saya yang tidak berasal dari latar belakang Linux bertanya kepada saya tentang menggunakan ./sebelum beberapa perintah dan bukan yang lain, jadi saya menjelaskan kepadanya bagaimana cara PATHkerjanya dan bagaimana biner dipilih untuk dijalankan. Responsnya adalah bisu dan dia hanya ingin tidak perlu mengetik ./sebelum perintah.

Pertanyaan: Apakah ada cara untuk dengan mudah mengubah perilaku shell sehingga $PWDselalu menjadi item pertama PATH?

Christophe
sumber
Bodoh itu mungkin (atau mungkin tidak), tetapi setiap lingkungan memiliki kebiasaan itu, dan ini adalah kekhasan shell Unix yang khas.
RonJohn
12
Ini langkah keamanan. Kerang yang digunakan untuk melakukan ini secara default (pikirkan tahun 1970-an), dan sistem multi-pengguna diserang secara luas karenanya.
Charles Duffy
3
Jawabannya adalah bodoh : kata kolega perlu mendidik dirinya sendiri tentang topik ini. Jawaban spontan itu menunjukkan respons gaya PHB : tidak ada pemahaman atau apresiasi terhadap sistem yang mendasarinya.
Cloud
2
Mengapa tidak memasukkan saja binari ke ~/bindalamnya dan menjadikannya bagian dari PATH? Ini membuat semuanya teratur, juga.
Sergiy Kolodyazhnyy
3
@Ziazis di Windows, direktori saat ini dianggap terlepas dari apakah itu bagian dari PATH(yang merupakan sumber pertimbangan biasa).
Stephen Kitt

Jawaban:

55

Jika Anda benar-benar ingin, Anda dapat melakukan ini dengan menambahkan .ke jalur Anda:

export PATH=".:$PATH"

Namun, itu ide yang buruk, karena itu berarti shell Anda akan memilih perintah apa pun di direktori saat ini daripada yang lain. Jika seseorang (atau beberapa program) menjatuhkan lsperintah jahat di direktori yang sering Anda gunakan, Anda dalam kesulitan ...

Stephen Kitt
sumber
13
Ini adalah poin yang sangat baik, meskipun mungkin cukup untuk memindahkannya. ke ujung jalan lalu ekspor PATH = "$ PATH :."
Christophe
12
Memang saya ingat memiliki .di awal Anda PATHadalah default untuk pengguna normal (jika saya membuat pengguna dengan "sam" di HP-UX, setidaknya; Saya tidak yakin tentang SunOS lama). Kemudian standar ini dihapus karena alasan keamanan. Jika Anda memiliki .sebagai item terakhir dari Anda PATH, masih ada yang bisa berharap untuk kesalahan ketik yang khas.
Philippos
6
@ Pilipos, ya seperti /tmp/slskrip prank yang terkenal untuk menargetkan pengguna dengan PATH seperti itu. Di Debian dan turunannya, instal slpaket untuk mendapatkan gambaran seberapa sering Anda mengetik sldi tempat ls.
Stéphane Chazelas
Tidak, ini bukan ide yang buruk, itu ide yang bagus, terutama jika Anda seorang pengembang. Tentu saja, menjaga lingkungan di mana tidak ada yang menjatuhkan perintah berbahaya adalah ide bagus lainnya.
jamesqf
4
@ jamesqf, sebenarnya, ide yang bagus untuk mengetik ./ketika Anda ingin memanggil perintah di direktori saat ini. Atau, jika direktori saat Anda biasa adalah /project/under/development/bin, kemudian menambahkan bahwa untuk Anda PATH. Ini memecahkan kasus penggunaan pengembang Anda. Menempatkan .pada awal Anda PATHadalah ide yang buruk, titik.
Wildcard
14

Meskipun ini bukan jawaban langsung untuk pertanyaan Anda, praktik terbaik adalah membuat bindirektori di direktori home Anda sebagai /home/user/bin:

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

Minta skrip pribadi Anda dimasukkan ke sana. Itu PATHakan dilalui dalam urutan yang Anda tentukan dan jalankan skrip pribadi Anda tanpa yang .diperlukan.

Valentin Bajrami
sumber
0

Anda harus memiliki. di awal variabel PATH Anda:

export PATH=".:$PATH"
Guru
sumber