Bash Manual dice (página de manual, mi énfasis):
Cuando Bash invoca un comando externo, la variable
$_se establece en la ruta completa del comando y se pasa a ese comando en su entorno.
Y ( Parámetros especiales ):
_(
$_, un guión bajo). Al iniciar el shell, establezca el nombre de ruta absoluto utilizado para invocar el shell o el script de shell que se ejecuta como se pasa en el entorno o la lista de argumentos. Posteriormente, se expande hasta el último argumento del comando anterior, después de la expansión. Establezca también el nombre de ruta completo utilizado para invocar cada comando ejecutado y colocado en el entorno exportado a ese comando. Al verificar el correo, este parámetro contiene el nombre del archivo de correo.
En un bash shell, ejecuto:
$ bash $ export | grep '_='Según el manual,
_debería ser una variable de entorno del nuevo shell bash.exportse supone que genera todas las variables de entorno del nuevo bash shell, pero no genera_. Entonces, me pregunto si_es una variable de entorno del nuevo bash shell.En realidad, en cualquier shell de bash, sucede lo mismo
$ export | grep '_='no da salida a nada. Entonces, me pregunto si
_alguna vez es una variable de entorno de un shell bash.Para comparacion:
$ dash $ export | grep '_=' export _='/bin/dash'
Mi publicación está inspirada en el comentario de Mike y la respuesta de Stephane .
bash -c export | grep _=(de golpe), se mostrará cómo el shell padre invoca el bashcomando, a pesar de que $_no está definida en la matriz.
exportes incorporado, pero si lo usaprintenv _, le mostrará cómo se invocó:/usr/bin/printenven este sistema.