나는 startx
. 그 전에는 다음이 PS1
있었습니다.
$ cat /proc/self/environ | tr '\0' '\n' | egrep '^PS'
PS1=[\u@\H \w]
PS3=>
PS2=>
PS4=+
그것으로부터 X
나는 다음을 얻는다:
$ cat /proc/self/environ | tr '\0' '\n' | egrep '^PS'
PS3=>
PS4=+
나는 체크인 GNOME
했고 awesome
. 이것이 예상되는 동작입니까? 내가 할 수 있는게 있습니까?
답변1
아니요, X는 환경 변수를 파괴하지 않습니다. 그러나 bash는 특히 비대화형 쉘에서 설정을 해제합니다 PS1
.PS2
$ PS1='my PS1' PS2='my PS2' PS3='my PS3' PS4='my PS4' bash -c export |grep PS
declare -x PS3="my PS3"
declare -x PS4="my PS4"
Bash는 아마도 로그인 시퀀스의 일부로 어딘가에서 실행될 것입니다. 당신 /bin/sh
이 bash이고 그것이 일반적이라면, 그렇지 않더라도 이것이 보장됩니다.
프롬프트는 대화형 셸에서만 의미가 있는 셸 설정이므로 환경으로 내보낼 필요가 없습니다. 이것을 쉘의 대화형 초기화 파일의 일부로 설정하십시오 .bashrc
.
답변2
나는 당신이 bash
쉘로 실행되고 있다고 가정합니다. 다른 것을 실행하는 경우 세부 사항은 다르지만 접근 방식은 거의 동일하게 유지됩니다.로그인 셸을 확인하려면 다음 명령을 실행하세요.getent passwd "${USER:-$(id -nu)}" | awk -F: '{print $NF}'
.profile
귀하의 프롬프트 가 또는에 정의되어 .bash_profile
있고 터미널에 로그인할 때 (한 번) 설정된 것 같습니다 . 터미널을 호출 startx
하고 열면 이것이 로그인 세션이 아니라는 것을 "알고" 호출합니다 .bashrc
.
다음 명령을 사용하여 이를 확인할 수 있으며 그 결과를 질문에 인용할 수 있습니다.grep '\<PS.*=' .profile .bash_profile .bashrc
내 제안은 로그인 셸을 강제 실행하도록 GUI 터미널 응용 프로그램을 구성하는 것입니다(이러한 옵션이 설치에 존재한다고 가정).
.profile
또는 파일을 확인하고 .bash_profile
일회성 .bashrc
시작 코드(예:)를 새 파일로 이동하고 .bash_once
새 파일의 모든 인스턴스에 대해 반복해야 하는 코드(예:)를 이동합니다. 그런 다음 이제 비어 있거나 적절하게 시작할 수 있습니다.bash
.bash_everytime
source .bash_once
source .bash_everytime
.profile
.bash_profile
.bashrc