Posso herdar “set + h” para um subprocesso?

1

Parece que não consigo herdar o efeito de set +h em 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 executo ./call , o seguinte é impresso:

$-=hB
SHELLOPTS=braceexpand:hashall:interactive-comments

Eu pensei que as opções de shell são herdadas quando eu exporto SHELLOPTS . Este não é aparentemente o caso.

Existe uma maneira de herdar o efeito de set +h para um script de shell chamado?

    
por René Nyffenegger 19.02.2018 / 08:12

1 resposta

2

Em manual do bash :

The options appearing in SHELLOPTS are those reported as ‘on’ by ‘set -o’. If this variable is in the environment when Bash starts up, each shell option in the list will be enabled before reading any startup files.

Segue-se que as opções desativadas não aparecem em SHELLOPTS e, portanto, não tem efeito sobre se o novo shell as habilita ou desabilita.

Você pode tentar:

  • execute o script com bash +h ./called ou
  • coloque set +h em um arquivo, defina BASH_ENV para o caminho desse arquivo e export , achei que isso afetará todas instâncias de bash iniciadas na linha, a menos que uma delas anula ou não a divulga.
por 19.02.2018 / 08:29