Eu pareço incapaz de herdar o efeito de set +h
um script de shell chamado:
Aqui está um script de shell ( ./call
).
#!/bin/bash
set +h
export SHELLOPTS
./called
E aqui está o conteúdo de ./called
:
#!/bin/bash
echo \$-=$-
echo SHELLOPTS=$SHELLOPTS
Quando eu executo ./call
, é impresso o seguinte:
$-=hB
SHELLOPTS=braceexpand:hashall:interactive-comments
Eu pensei que as opções de shell são herdadas quando eu exporto arquivos SHELLOPTS
. Este não é aparentemente o caso.
Existe uma maneira de herdar o efeito de set +h
um script de shell chamado?
Do manual do bash :
Segue-se que as opções desativadas não aparecem em
SHELLOPTS
e, portanto, não afetam se o novo shell as habilita ou desabilita.Você pode tentar qualquer um dos seguintes:
bash +h ./called
, ouset +h
em um arquivo, definaBASH_ENV
o caminho desse arquivo eexport
ele, pensei que isso afetará todas as instâncias do bash iniciadas na linha, a menos que um desses desmarque ou desconecte-o.