Bash Manual mengatakan (halaman manual, penekanan saya):
Ketika Bash memanggil perintah eksternal, variabel
$_
diatur ke pathname lengkap dari perintah dan diteruskan ke perintah itu di lingkungannya.
Dan ( Parameter Khusus ):
_
(
$_
, sebuah garis bawah.) Pada startup shell, setel ke pathname absolut yang digunakan untuk memanggil shell atau skrip shell yang dieksekusi seperti yang diteruskan dalam lingkungan atau daftar argumen. Selanjutnya, perluas argumen terakhir ke perintah sebelumnya, setelah ekspansi. Juga setel ke nama path 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.
Di bash shell, saya menjalankan:
$ bash $ export | grep '_='
Menurut manual,
_
harus variabel lingkungan dari bash shell baru.export
seharusnya menampilkan semua variabel lingkungan dari bash shell baru, tetapi tidak menghasilkan_
. Jadi saya bertanya-tanya apakah_
variabel lingkungan dari bash shell baru?Sebenarnya di bash shell, hal yang sama terjadi
$ export | grep '_='
tidak menghasilkan apa-apa. Jadi saya bertanya-tanya apakah
_
pernah ada variabel lingkungan dari bash shell?Untuk perbandingan:
$ dash $ export | grep '_=' export _='/bin/dash'
Posting saya terinspirasi oleh komentar Mike dan balasan Stephane .
bash -c export | grep _=
(dari Bash), akan ditampilkan bagaimana shell induk menjalankan bash
perintah, meskipun $_
tidak disetel pada induknya.
export
adalah builtin, tetapi jika Anda menggunakanprintenv _
, itu akan menunjukkan kepada Anda bagaimana itu dipanggil:/usr/bin/printenv
pada sistem ini.