... por quê? Provavelmente existe uma solução melhor, então se você indicar por que provavelmente podemos sugerir algumas soluções mais sólidas. Lembre-se de que o shell é usado não apenas pelos usuários, mas também por muitos processos do sistema.
De qualquer forma, bash
(o shell padrão) quando iniciado, irá (mas veja depois) executar uma série de scripts para todo o sistema. O shell pode ser iniciado como interativo ou não interativo e como shell de login ou não-login (consulte man bash
e procure por "INVOCATION" para obter detalhes).
Basicamente, quando um usuário inicia um shell em um terminal em uma sessão gráfica, o bash é chamado como shell interativo e não-login e executa /etc/bash.bashrc
:
When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of /etc/bash.bashrc and ~/.bashrc.
Então você pode adicionar comandos lá. Tenha cuidado, porém, erros aqui podem tornar seu sistema muito difícil de recuperar.
resumo executivo (testado)
Edite /etc/bash.bashrc
e, DEPOIS da linha que diz
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
adicione por exemplo:
echo "Hello $USER, you started a new shell"
e de um terminal:
[romano:~] % bash
Hello romano, you started a new shell
romano@RRyS:~$
Se você deseja executar um script aqui, tenha cuidado e verifique novamente, como
if [ -x /full/path/to/script ]; then
/full/path/to/script # double check here
fi
verifique novamente que /full/path/to/script
não chama bash
no modo interativo, ou você terá um bom loop infinito aqui.
advertência:
Isso não é de todo imposto :
outros shells ( zsh
, tcsh
, dash
) se comportarão de maneira diferente e usarão arquivos diferentes. E, obviamente, qualquer usuário pode chamar o shell com
bash --norc --noprofile
e ter os arquivos de script ignorados.
Existe até um exemplo no/etc/bash.bashrc
de 14.04% (provavelmente um remanescente de quando o Ubuntu mudou para sudo...
) para sugerir ao usuário usar sudo
ao invés de logar como root:
# sudo hint
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
case " $(groups) " in *\ admin\ *)
if [ -x /usr/bin/sudo ]; then
cat <<-EOF
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
EOF
fi
esac
fi
... mas isso é arqueologia de código; -).