Nenhuma das APIs POSIX C usa a variável de ambiente SHELL
explicitamente. O system
e popen
deve chamar um programa chamado sh
. Alguns utilitários (por exemplo, ex
, mailx
,…) deve usar $SHELL
, mas sempre para executar o código fornecido pelo usuário; make
ignora explicitamente $SHELL
.
A seção sobre variáveis de ambiente permite utilitários , mas não APIs C (“interfaces de sistema”) para ter um comportamento diferente se $SHELL
não estiver em conformidade com POSIX sh.
Na prática, SHELL
é definido como o shell de login do usuário, que pode ou não ser compatível com POSIX. Zsh e peixes são alternativas populares. Eu tenho usado o zsh por uma década em várias variantes do Unix, e não me lembro de nenhum utilitário do sistema ter falhado. Vi o código ocasionalmente escrito chamando $SHELL
em vez de sh
para executar scripts sh. Isso é muito raro e não precisa impedi-lo de configurar SHELL
para o que você quiser.
Em suma, sim, SHELL
é seu shell interativo favorito, e os aplicativos não recebem garantia de qual sintaxe aceita ou até mesmo se aceita uma opção -c
.