Por que .bash_profile não conseguiu definir a variável PS1?

1

Eu defini .bash_profile para

 exec env -i HOME=$HOME TERM=vt100 PS1='\h' /bin/bash

Mas quando eu faço login, ele também mostra:

 lfs@sam:~$ env
 TERM=vt100
 PWD=/home/lfs
 PS1=${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 
 SHLVL=1
 HOME=/home/lfs
 _=/usr/bin/env
 lfs@sam:~$

O que aconteceu?

Como definir PS1 quando o login?

Obrigado ~

    
por sam 25.07.2012 / 18:18

1 resposta

3

Esse valor de PS1 é definido pelo arquivo de configuração do sistema bash /etc/bash.bashrc . Você pode substituí-lo, definindo-o em ~/.bashrc .

PS1 é uma variável do shell. Seu significado depende do shell. Normalmente não deve ser exportado, uma vez que não deve estar em ambientes de processo, embora você possa se safar se usar apenas um shell.

Observe que o bash é bastante peculiar sobre os arquivos de configuração: se você iniciar uma instância de logon do bash, ele lerá apenas /etc/profile e ~/.bash_profile e ~/.profile se não houver ~/.bash_profile . Se você iniciar uma instância interativa sem logon, ele lerá /etc/bash.bashrc (se configurado para isso) e ~/.bashrc . Para obter suas configurações interativas em instâncias de login do bash, você deve colocar esse código em ~/.bash_profile :

if [ -r ~/.profile ]; then
  . ~/.profile
fi
case $- in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac

A variável do shell $- contém a letra i para indicar que o shell é interativo.

    
por 26.07.2012 / 02:18