$ PATH não modificado dentro do LXDE em Raspbian

4

Eu tenho um diretório bin em home / pi. Isso é adicionado ao meu $ PATH quando eu faço o login (por .profile), mas quando entro no LXDE e uso o LXTerminal, meu diretório bin não é mais adicionado ao $ PATH.

    
por Funky Oordvork 13.09.2013 / 15:45

2 respostas

0

De man bash :

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

When a login shell exits, bash reads and executes commands from the files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.

When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

"Shells interativos" são aqueles que começam em primeiro plano em um terminal, mas não são necessariamente shells de login .

A login shell is one whose first character of argument zero is a -, or one started with the --login option.

Terminais GUI não fazem isso.

É por isso que, geralmente, .profile sources .bashrc - então .bashrc pode conter o material que você quer para todos shells, e .profile qualquer material adicional apenas para shells de login. Às vezes, isso é qualificado em .profile verificando se $PS1 (o prompt interativo) está definido, para que .bashrc seja incluído apenas para os interativos. Uma razão para isso seria evitar o uso de certos aliases em shells não interativos (por exemplo, execução de scripts).

Então: você pode colocar sua definição de $ PATH em ~/.bashrc e ter certeza de que ela é proveniente de ~/.profile ou ~/bash_profile .

    
por 13.09.2013 / 16:08
3

On a maioria das configurações, ~/.profile é lida no tempo de login e esse é o local habitual para definir variáveis de ambiente. Infelizmente, algumas combinações de distribuição, gerenciador de exibição (método de login gráfico) e ambiente de desktop ignoram esse arquivo. Você não especifica qual gerenciador de exibição está usando (lxdm?), Mas aparentemente ele não organiza a leitura de ~/.profile quando a sessão X é iniciada.

Eu acredito que o Raspbian suporta ~/.pam_environment . Esse arquivo é lido por todos os métodos de login, o que inclui um pam_env não-antigo na seção de autenticação ou sessão do PAM . Eu acredito que é o caso do Raspbian (verifique se /etc/pam.d/common-session ou /etc/pam.d/lxdm contém uma linha mencionando pam_env.so ). Você pode definir variáveis de ambiente em ~/.pam_environment , mas as possibilidades são mais limitadas que em ~/.profile : você só pode escrever VARIABLE=VALUE , não pode usar outras variáveis ou adicionar ao valor existente da variável. Então você não pode escrever PATH=$HOME/bin:$PATH como você faria em ~/.profile , você tem que soletrar:

PATH=/home/pi/bin:/usr/local/bin:/usr/bin:/bin

Não recomendo configurar variáveis de ambiente em .bashrc . Isso substituirá os valores existentes sempre que você iniciar um subshell, e as variáveis só serão definidas em programas iniciados por meio de um shell em um terminal e não em programas iniciados diretamente da GUI .

    
por 17.09.2013 / 01:24