Bash não carregando '.profile' em uma nova sessão no Linux

14

Estou configurando uma nova máquina Linux que recebi de nosso departamento de TI e notei que .profile não está carregado quando inicio uma nova sessão de terminal. O shell atual é Bash , embora eu o tenha alterado do padrão sh veio com. Como faço para carregar .profile na inicialização?

Eu acessei o shell por meio de SSH : ssh myusername@remotemachine . Eu tenho privilégios de administrador nele.

    
por sa125 16.08.2010 / 16:23

2 respostas

21

Quando o Bash começa como um shell de login interativo, um dos arquivos que ele pode processar é ~/.profile .

Quando ele é iniciado como um shell interativo de não-login, ele não funciona. Ele processa /etc/bash.bashrc (se esse arquivo ou um arquivo semelhante estiver ativado em sua versão do Bash) e ~/.bashrc .

Você pode adicionar o seguinte ao seu ~/.bashrc (mas tenha cuidado para que os loops ou valores sejam alterados inadvertidamente):

. $HOME/.profile
    
por 16.08.2010 / 16:38
14

Depende de como você inicia seu shell. Como outros já disseram, um shell de login irá carregar o seu perfil (ele irá procurar por .bash_profile primeiro e, em seguida, tentará .profile). Se encontrar um destes, carrega-os. Um shell não-login (interativo ou não interativo) irá gerar o .bashrc.

Eu sugiro colocar tudo em .bashrc. A divisão .profile / .bashrc era meio arbitrária e fazia mais sentido nos velhos tempos do UNIX quando tty não era apenas um nome de dispositivo e significava um TeleType real. Era para começar certas coisas (como checar o e-mail) no login 'principal' para um servidor, e apenas coisas normais de configuração para outros shells. Na maioria dos Linuxes você irá logar agora, você não está realmente logando em um shell, enquanto você está logando em alguma interface gráfica (KDE, gnome, CDE 'shudder'). Os "processos de login do spawn" agora são atendidos pelo seu gerenciador de sessões. É muito menos relevante agora.

Minha sugestão: Faça o seu .profile consistir apenas:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

como a primeira linha de .bashrc, proteja-se contra coisas estranhas que acontecem ao executar um script bash saltando antes:

[[ $- != *i* ]] && return
    
por 16.08.2010 / 19:28