A resposta à sua pergunta específica é que muitas vezes apenas /etc/bash.bashrc
(ou /etc/bashrc
) é carregado.
Parece haver algumas maneiras de resolver isso, mas a maioria delas são soluções alternativas, infelizmente. Em nenhuma ordem particular de preferência:
Fazer um login falso
Logins executam /etc/profile
e geralmente você pode colocar seus scripts personalizados em /etc/profile.d/*.sh
Envolva-o em um login do bash
Às vezes, é mais fácil acionar um login, por exemplo
echo "do whatever $PATH $BASH $PS1 $0"
torna-se
bash -lc 'echo "do whatever $PATH $BASH $PS1 $0"'
Carregue manualmente o perfil
Faça o que os logins fazem, carregue manualmente o perfil
source /etc/profile;echo "do whatever $PATH $BASH $PS1 $0"
Editar variáveis de ambiente global
Para variáveis simples, você pode adicionar a /etc/environment
Variáveis do ambiente_do_segundo do Ubuntu , mas a expansão das variáveis não funciona
THING_HOME="/opt/thing"
PATH="$PATH:/opt/thing" # this will NOT work
Para o PATH, você pode anexá-lo, por exemplo sudo sed -i 's#PATH=\"[^\"]*#&:/opt/thing#' /etc/environment
Editar todos os shells do bash
Você pode adicionar a /etc/bash.bashrc
(ou /etc/bashrc
) porém isso normalmente sai cedo se não for interativo, então você precisa hackar suas adições antes:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Não faça nada disso
- Considere os links simbólicos se você estiver tentando adicionar algo ao PATH
- Considere fazer com que seus programas / scripts modifiquem seu próprio ambiente
- O Systemd tem
EnvironmentFile
eEnvironment
, e. %código%
Estou interessado em saber se mais alguém tem melhores soluções!