Estou usando o Linux Mint. Meu shell de login ( cat /etc/passwd | grep myUserName
) é bash.
Depois de iniciar o ambiente gráfico da área de trabalho e executar um emulador de terminal, percebo que ele .bash_profile
não é originário (os vários ambientes export
nele não estão configurados). Mas se eu fizer login em um console de texto ( ctrl+ alt+ F1) ou executar manualmente bash -l
no emulador de terminal, .bash_profile
funcionará bem.
Estou errado quando penso que isso .bash_profile
deve ser originado quando o X é iniciado e que todos export
os vars devem estar disponíveis no terminal, rodando no X?
PS Não é uma boa ideia colocar tudo .bashrc
e obter a fonte .bash_profile
( https://stackoverflow.com/questions/902946/ ): o material do ambiente deve ser obtido apenas uma vez.
.bash_profile
é o script de configuração de inicialização do bash. Não existe um padrão exigindo X para a fonte.bash_profile
.O que você está pensando é bastante
.profile
. Originalmente, era o arquivo de configuração de inicialização do shell bourne (sh). Hoje, muitas distribuições têm seu ambiente de desktop configurado para a origem.profile
. Observe que isso também não é um padrão, mas parece ser uma convenção.O Debian costumava buscar fontes
.profile
no login gráfico ( página da wiki a partir de 2013 ) agora não ( página da wiki a partir de 2016 ).Arquivar fontes
.xprofile
no login gráfico ( página wiki a partir de 2013 ).O Ubuntu costumava desencorajar o uso
.profile
( página wiki a partir de 2013 ) agora não desencoraja mais ( página wiki a partir de 2016 ).Em relação à sua outra pergunta: Por que meu ~ / .bash_profile não funciona? Esse é o comportamento esperado.
O comportamento, em resumo, é o seguinte:
~/.profile
~/.bashrc
Para obter mais detalhes, consulte minha resposta para uma pergunta semelhante no askubuntu: https://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc / 132319 # 132319
fonte
~/.bashrc
” é um mau conselho: você deve ler apenas.bashrc
de um shell interativo . Você perdeu o problema principal aqui, que é que, ao fazer login no X, não há instância de login do bash (na maioria das combinações de gerenciador de exibição / ambiente de desktop, incluindo evidentemente o AntonioK)..bashrc
", eu sempre quis um shell interativo. Eu esclareci essa parte. Espero que não seja mais enganoso..profile
( link ) " O wiki uma vez (absurdamente) desencorajou isso; isso foi consertado. (A observação/etc/profile
permanece desencorajada para atribuições em todo o sistema, em vez de incluir scripts/etc/profile.d
.) Os.profile
arquivos por usuário agora são apresentados como uma das maneiras recomendadas para definir variáveis de ambiente por usuário: "Arquivos adequados para configurações de variáveis de ambiente que devem afetar apenas um usuário específico (em vez do sistema como um todo) são ~ / .pam_environment e ~ / .profile . "~/.profile
para login gráfico e~/.xsessionrc
deve ser usado.Na sua pergunta, consulte https://stackoverflow.com/questions/902946/ como recomendação para não obter a fonte, quando a resposta aceita prescreve
Colocar tudo
.profile
isso não funcionou para mim no Linux Mint. Usando.bashrc
funcionou bem.fonte
Surgem alguns problemas ao tentar recarregar / arquivo de origem ~ / .profile. [Isso se refere ao Ubuntu linux - em alguns casos, os detalhes dos comandos serão diferentes]
De Anúncios. 1)
Executar isso diretamente no terminal significa que não haverá sub-shell criado. Então você pode usar dois comandos:
ou
Nos dois casos, isso atualizará o ambiente com o conteúdo do arquivo .profile.
Anúncio 2) Você pode iniciar qualquer script bash chamando
ou
No primeiro caso, isso criará um subshell que não afetará as variáveis de ambiente do seu sistema e elas serão visíveis apenas para o processo do subshell. Após concluir o comando subshell, nenhuma das exportações, etc. será aplicada. Este é um erro comum e faz com que muitos desenvolvedores percam muito tempo.
Para que suas alterações aplicadas em seu script tenham efeito no ambiente global, o script deve ser executado com
comando.
Para garantir que seu script não seja executado em um subshel, você pode usar esta função. (Novamente, o exemplo é para o shell do Ubuntu)
Espero que isso elimine alguns dos mal-entendidos comuns! : D Boa Sorte!
fonte
A solução simples é tornar o terminal um terminal de login. Para o terminal Gnome em 'Lado a lado e comando' do perfil padrão, você pode marcar a caixa "Executar comando como um shell de login". Este artigo explica a diferença entre um shell de logon e um que não é.
fonte