O padrão ~/.profile
sources ~/.bashrc
apenas se BASH_VERSION
não for vazio, ou seja, (do padrão .profile
):
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Sob o Lightdm, os scripts de inicialização são executados por /bin/sh
, que no Debian é um link simbólico para /bin/dash
. Isso significa que quando ~/.profile
é originado na inicialização, BASH_VERSION
está vazio e, portanto, ~/.bashrc
não é originado.
Soluções possíveis
-
Execute as funções de
~/bin
-
Outra solução (se você precisar de mais do que uma na inicialização) é ter um arquivo separado, digamos
~/.startup_functions
onde você mantém todas as suas funções, fonte o arquivo de.profile
e executar as funções daqui. Observe que, desde que você está executando -los com/bin/dash
, você tem que verificar a compatibilidade.
Caso contrário, se você quiser usar bash
como shell e origem de inicialização
.bashrc
na inicialização, uma coisa que você pode fazer é definir bash
como
padrão /bin/sh
, por exemplo, executar
$ dpkg-reconfigure dash
e siga as instruções.
Se você quiser definir as funções em .bashrc
e executá-las na inicialização, observe que .profile
carrega .bashrc
apenas se o shell for interativo, se (como padrão) você tiver o seguinte teste em .bashrc
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
o que significa que você teria que remover este teste ou definir as funções necessárias antes, de qualquer forma, eu continuaria executando a função de ~/bin
.