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_functionsonde você mantém todas as suas funções, fonte o arquivo de.profilee 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 .