.profile não está sendo executado quando inicio um terminal bash

15

Quando inicio um terminal bash, meu perfil. Não está sendo executado. Eu não tenho um ~ / .bash_profile ou um ~ / .bash_login, então o .profile deve funcionar, certo? O que mais pode estar errado?

David Doria
fonte

Respostas:

23

Não é um shell de login.

Se um shell for um shell de logon, ele procurará .bash_profile, se existir, então .profile. Outras conchas procuram .bashrc

Portanto, você pode colocar o que deseja em cada instância do shell em .bashrc e, possivelmente, ter uma referência que origine .bashrc em .profile.

Então: .bashrc:

stuff you want

fim de .profile:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
fonte
Então, quando eu executo o 'konsole' no KDE, isso é um shell sem login, certo? Em outra máquina, eu definitivamente coloquei as coisas em .profile e as fiz funcionar quando abro um terminal como este - acho que não entendo quando você deseja que algo diferente aconteça no login versus quando você abre um terminal?
21412 David Doria
@DavidDoria depende, eu mudei as configurações ou criei aliases para o que o konsole executa, para fazê-lo funcionar bash --login. No seu caso parece simplesmente executar bash, que por padrão não irá desencadear uma shell de login
rico Homolka
Se você estiver usando o LightDM, esse pode ser o motivo. Outros gerenciadores de exibição, como GDM e KDM, fornecem origem .profile no login, mas o LightDM não (por design). Veja bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
WakiMiko
Estou usando o KDM.
David Doria
2
Se você estiver usando o Gnome Terminal, poderá editar-> preferências de perfil, vá para a guia Título e comando e marque "Executar comando como um shell de login". Ele fornecerá seu .bash_profile ou .profile sempre que você abrir um terminal, conforme o esperado.
Lambart
3

tente usar ~/.bashrc.

goweon
fonte
1

Se você estiver usando uma área de trabalho gráfica, o .profile deve ser fornecido pelo seu gerente de área de trabalho. O Lightdm fornece o .profile agora, pelo menos no Ubuntu. Veja: https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

Com o kdm e o Kubuntu-12.04, o arquivo / etc / kde4 / kdm / Xsession é obtido, o que inclui o .profile. O Kubuntu-12.10 provavelmente usará o lightdm. O Ubuntu 12.04 usa o lightdm para que as fontes / usr / sbin / lightdm-session .profile.

Eu acho que o caminho a seguir é (1) definir / exportar as configurações do ambiente em ~ / .profile e (2) ter .profile fornecido por .bash_profile:

[[ -f ~/.profile ]] && . ~/.profile

(e não possui .bashrc originário de .profile ou .bash_profile).

Veja também:

Freddy Vulto
fonte
1
Isso explica como obter a sua .profileorigem no início da sessão, mas ele está realmente querendo saber sobre como obter basha fonte quando ele lança um terminal (não no início da sessão)
cpast
Você não deve ter o .profile de origem ao iniciar um novo terminal (a partir do KDE). Todo o objetivo do .profile é obtê-lo uma vez no login, seja em um terminal gráfico ou em um terminal de texto; .profile deveria ter sido obtido no momento em que você se conectou ao KDE.
Freddy Vulto
.profile deve ser fornecido pelo seu gerente de desktop. Bem, isso depende da compreensão do objetivo do arquivo. No Debian, / etc / profile (e ~ / .profile como sua extensão) deve ser usado para shells do tipo bash .
Alois Mahdal
Você não precisa obtê-lo novamente, se for originado no login. seu bash o herdará, a menos que você esteja fazendo algo bobo como "exportar PATH = ~ / .bin" ou algo fazendo com que ele seja sobrescrito.
HörmannHH 08/09