As opções de shell não são herdadas entre as sessões de shell e você está lidando com duas sessões de shell aqui:
- A sessão interativa em que você define sua opção de shell e
- A sessão do script de shell na qual você testa a opção.
O script de shell nunca detectará que a opção foi definida na sessão do shell interativo de chamada.
Soluções:
-
Transforme seu código em uma função shell (por exemplo, em
$HOME/.bashrc
):checknoclobber () { [ -o noclobber ] && echo 'Noclobber is on'; }
Ou, para o caso genérico,
checkoption () { if [ -o "$1" ]; then printf '%s is set\n' "$1" >&2 return 0 else printf '%s is not set (or invalid option name)\n' "$1" >&2 return 1 fi }
-
Defina a opção no script.
-
Origem do arquivo de script no shell interativo com
source
ou com o comando.
.