.bash_profile이 PS1 변수를 설정할 수 없는 이유는 무엇입니까?

.bash_profile이 PS1 변수를 설정할 수 없는 이유는 무엇입니까?

.bash_profile을 다음으로 설정했습니다.

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

하지만 로그인하면 다음도 표시됩니다.

 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:~$

무슨 일이에요?

로그인 시 PS1을 어떻게 설정하나요?

감사합니다~

답변1

이 값은 PS1bash 시스템 전체 구성 파일에 의해 설정됩니다 /etc/bash.bashrc. 에서 선택하여 이 작업을 수행할 수 있습니다 ~/.bashrc.

PS1쉘 변수입니다. 그 의미는 껍질에 따라 다릅니다. 쉘을 사용하는 경우에는 이스케이프할 수 있지만 일반적으로 프로세스 환경에 있어서는 안 되기 때문에 내보내서는 안 됩니다.

bash는 구성 파일과 관련하여 매우 기발하다는 점에 유의하십시오. bash의 로그인 인스턴스를 시작하면 읽기만 /etc/profile하고 ~/.bash_profile그렇지 ~/.profile않으면 ~/.bash_profile읽기만 합니다 /etc/bash.bashrc(그렇게 구성한 경우) . 그리고 ~/.bashrc. Bash의 로그인 인스턴스에서 대화형 설정을 얻으려면 다음 코드를 다음 위치에 넣어야 합니다 ~/.bash_profile.

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

쉘 변수에는 쉘이 대화형임을 나타내는 $-문자가 포함되어 있습니다.i

관련 정보