Bisakah Anda menjelaskan kalimat-kalimat berikut dari manual Bash tentang $_
, terutama bagian yang dicetak tebal, mungkin dengan beberapa contoh?
Pada startup shell, setel ke pathname absolut yang digunakan untuk memanggil shell atau skrip shell yang dieksekusi sebagaimana diteruskan dalam lingkungan atau daftar argumen .
Selanjutnya , perluas argumen terakhir ke perintah sebelumnya, setelah ekspansi.
Juga diatur ke pathname lengkap yang digunakan untuk memanggil setiap perintah yang dieksekusi dan ditempatkan di lingkungan yang diekspor ke perintah itu .
Saat memeriksa email , parameter ini menyimpan nama file email.
Jawaban:
Saya setuju itu tidak terlalu jelas.
1. Pada startup shell,
jika
_
variabel berada di lingkungan yangbash
menerima , makabash
biarkan tidak tersentuh.Secara khusus, jika
bash
shell itu dipanggil olehbash
shell lain (meskipunzsh
,yash
dan beberapaksh
implementasi juga melakukannya), makabash
shell itu akan mengatur_
variabel lingkungan ke jalur perintah yang dieksekusi (itulah poin ke-3 dalam pertanyaan Anda). Misalnya, jikabash
dipanggil untuk menafsirkan skrip sebagai akibat daribash
penafsiran shell lain :Itu
bash
akan diteruskan_=/path/to/bash-scrip
di lingkungan yang diberikanbash-script
, dan itulah nilai awal dari$_
bash
variabel akan berada dibash
shell yang menafsirkan skrip itu.Sekarang, jika aplikasi yang menjalankan tidak melewati
_
variabel lingkungan ,bash
shell yang dipanggil akan diinisialisasi$_
ke yangargv[0]
diterimanya sendiri yang bisa menjadibash
, atau/path/to/bash
atau/path/to/some-script
atau apa pun (dalam contoh di atas, itu akan menjadi/bin/bash
jika she-bang dari skrip adalah#! /bin/bash
atau/path/to/bash-script
tergantung pada sistem ).Sehingga teks itu menyesatkan karena menggambarkan perilaku penelepon yang
bash
tidak memiliki kendali atas. Aplikasi yang dipanggilbash
mungkin tidak disetel$_
sama sekali (dalam praktiknya, hanya beberapa shell dan beberapa aplikasi interaktif yang jarang dilakukan,execlp()
tidak misalnya), atau dapat menggunakannya untuk sesuatu yang sama sekali berbeda (misalnyaksh93
mengaturnya*pid*/path/to/command
).2. Selanjutnya
The Selanjutnya tidak sangat jelas baik. Dalam praktiknya, itu segera
bash
mengartikan perintah sederhana di lingkungan shell saat ini.Dalam kasus shell interaktif , itu akan menjadi perintah sederhana pertama yang ditafsirkan dari
/etc/bash.bashrc
misalnya.Sebagai contoh, pada prompt shell interaktif:
Untuk shell non-interaktif , itu akan menjadi perintah pertama di
$BASH_ENV
atau dari kode yang diumpankan ke shell itu jika$BASH_ENV
tidak disetel.3. Saat Bash menjalankan perintah
Poin ketiga adalah sesuatu yang berbeda dan diisyaratkan dalam diskusi di atas.
bash
, seperti beberapa shell lain akan melewatkan_
variabel lingkungan ke perintah yang dijalankannya yang berisi jalur yangbash
digunakan sebagai argumen pertama keexecve()
panggilan sistem.4. Saat memeriksa surat
Poin keempat dijelaskan secara lebih rinci dalam deskripsi
MAILPATH
variabel:Contoh:
sumber
Coba contoh sederhana ini:
Jalankan dengan memberikan path absolut (
/home/$USERNAME/test.sh
); keluaran:Pertama
$_
berisi jalur yang Anda gunakan untuk menjalankan skrip dan yang kedua berisi argumen pertama ke tengahecho
. Untuk item ketiga dalam daftar, jika Anda memulai terminal baru dan mengetik gema,$_
ia akan menampilkan variabel yang berisiPATH
yang biasanya digunakan untuk mencari dan memanggil perintah (di mesin Ubuntu saya) di shell normal atau path absolut ke.bashrs
file Anda di shell login.Untuk item empat dari halaman bash man:
sumber
echo $_
adalahEDITOR
, dan mengapa itu? Kasus apa yang diikuti? (3) Dapatkah Anda memberikan contoh tentang cara memeriksa email, dan menggunakan$_
dalam hal ini?.bashrc
dan komentari setiap baris di sana. Simpan hanya satu baris yang berisi perintah sukaecho "test"
atau serupa. Simpan dan tutup. Kemudian jalankanbash
dan segeraecho $_
. Gema terakhir ini harus mencetak tes dalam output.MAILPATH
di linuxcommand.org/lc3_man_pages/bash1.htmlUntuk kasus 2, contoh bernilai ribuan kata:
Lakukan apa yang Anda duga / harapkan. Memberi saya placeholder sederhana ketika saya berada di baris perintah untuk menyelamatkan saya karena harus mengulang sendiri.
sumber