Como faço para consultar as opções de tempo de compilação do bash em um determinado sistema?
O caminho rc do sistema para o bash difere entre os sistemas. Às vezes é /etc/bash.bashrc
e às vezes é /etc/bashrc
. Como posso detectar isso programaticamente?
Eu sei que posso listar opções em um shell com:
set -o
ou
shopt
Tanto quanto eu posso dizer, o código-fonte do Bash não diferencia entre
SYS_BASHRC
outros arquivos rc incluídos após a compilação. Além disso,SYS_BASHRC
poderia ser indefinido, e o binário resultante não usaria um sistema rc.Todos os arquivos usados por um processo podem ser encontrados por
strace
, no entanto. Bash inclui arquivos rc apenas se for executado interativamente, então:O arquivo resultante
tmp.log
conterá as informações desejadas:Infelizmente, também conterá um grande número de linhas, por exemplo, para bibliotecas (e o redirecionamento para /dev/null). Não tenho certeza de como selecionar a linha correta em todos os casos. Mas, na prática, acho que provavelmente será a primeira não biblioteca em
/etc/
: