Depois de pesquisar a variável TMOUT e várias recomendações, configurei o seguinte no arquivo /etc/bashrc:
TMOUT=600
readonly TMOUT
export TMOUT
Agora, quando um usuário faz login, o TMOUT é definido como 600, definido como somente leitura e exportado, mas ocorre este erro:
-bash: TMOUT: readonly variable
-bash: TMOUT: readonly variable
Alguma sugestão?
Eu acho que
/etc/bashrc
é originado mais de uma vez - depure-o adicionando umlinha antes de sua atribuição.
AFAIR
/etc/bashrc
não é originado por padrão, mas explicitamente de~/.bashrc
, e apenas em distribuições do tipo RHEL.Mas exportar e tornar uma variável somente leitura não funciona como você aparentemente espera:
As variáveis de ambiente não conhecem o atributo "readonly" do shell: isso só importará dentro da sessão / script atual.
Isso significa que um usuário pode ignorar o seu
TMOUT
simplesmente iniciando outro shell comenv -u TMOUT bash --norc
. Torná-lo somente leitura é apenas um incômodo.Em algum lugar, você está tentando atribuir à variável, mas agora é somente leitura.
Você pode verificar se a variável é readonly usando
declare
e só atribuir a ela se não for readonly:Os redirecionamentos ocultam a saída
declare
e a mensagem de erro quando a variável ainda não foi declarada.OK - A resposta do tio Billy me empurrou para o caminho para resolver este problema. Parece que ambos os arquivos /etc/profile e .bashrc de cada usuário estavam originando o /etc/bashrc onde a variável TMOUT estava sendo configurada, exportada e tornada somente leitura. Ao eliminar as chamadas extras para sourcing /etc/bashrc, tenho uma resolução.
Obrigado pela ajuda choroba e tio Billy