.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?

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

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


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:


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.