Algumas vezes eu confundi bash -v
ou bash --v
representei bash --version
o que eles não fazem, a partir de Bash 4.3.48(1).
De man bash
, bash -v
é equivalente a bash --verbose
; embora retorne uma saída grande (supostamente alguns bashrc
arquivos, talvez mais); Acho que apenas inicia uma sessão infantil.
bash --v
produz muito menos, principalmente bash: --v: invalid option
.
Eu planejei perguntar se algum dos dois poderia ser problemático em um bash totalmente padrão, mas não vejo nenhuma evidência para isso e suponho que os novatos do Bash não devam se estressar com isso.
Minha pergunta
Eu entendi mal de man bash
, qual é o significado de bash -v varname
.
Qual é o significado de iniciar uma nova sessão bash com uma variável aparentemente indefinida, ou significa iniciá-la também imprimindo o valor de uma variável exportada [1
]?
Notas para os recém-chegados:
- Uma variável exportada é qualquer variável herdada de uma sessão shell para outra (digamos, da sessão 0 para a sessão 1).
Você está confundindo duas coisas.
Iniciar
bash
comobash -v
iniciará umbash
shell no qual a opção de shellset -v
(set -o verbose
) está definida. É equivalente abash -o verbose
e abash --verbose
(uma das poucas opções de shell que possui uma opção longa equivalente). É possível definir qualquer uma dasabefhkmnptuvxBCHP
opções usando suas letras únicas ou usando-o
e seu nome longo diretamente ao iniciarbash
, por exemplo,bash -x
ebash -o xtrace
.O
-v varname
vem, presumo, da descrição dotest
comando interno que é capaz de testar se uma variável é definida comtest -v varname
ou[ -v varname ]
.Consulte o
bash
manual ouhelp set
ehelp test
embash
.As opções longas para
bash
não podem ser abreviadas.