$_
não parece ser uma variável de ambiente em bash
, bash
aparece apenas para exportá-lo para um ambiente de processo filho. Dentro do próprio bash, parece ser uma variável de shell normal. Note, no entanto, este não é o caso quando o primeiro comando é executado:
$ bash -c 'export -p | grep _='
declare -x _="/bin/bash"
Depois, no entanto, aparece como uma variável normal:
$ bash -c ':; declare -p | grep _='
declare -- BASH_EXECUTION_STRING=":; declare -p | grep _="
declare -- _=":
Este não é o caso em dash
:
$ dash -c 'export -p | grep _='
export _='/bin/dash'
$ dash -c ':; export -p | grep _='
export _='/bin/dash'
Embora aqui pareça apenas assumir seu papel adequado no modo interativo:
$ dash
$ :
$ export -p | grep _=
export _=':'