나는 처음부터 임베디드 Linux를 크로스 컴파일하는 것을 보고 있습니다.
일부3.3 "환경 설정", PS1은 에 선언되어 있습니다 .bash_profile
.
로 로그인하면 su - clfs
둘 다 실행 .bash_profile
됩니다 . .bashrc
로그인할 때만 실행 su clfs
됩니다 ..bashrc
두 경우 모두 PS1은 터미널을 업데이트하지 않습니다.
PS1을 넣으면 .bashrc
터미널이 업데이트됩니다.
CLFS 책에 포함되었습니다 .bash_profile
.
cat > ~/.bash_profile << "EOF"
exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
EOF
PS1을 위한 적절한 장소는 어디입니까?
답변1
이것PS1
쉘 변수~/.bashrc
bash
대화형 셸 세션을 위해 읽은 초기화 파일이므로 셸에 대해 설정해야 합니다 .
참고로 이 변수는쉘 변수는 환경 변수가 아닙니다(하위 프로세스가 해당 값을 상속받는 것은 의미가 없으며 현재 쉘에서만 사용합니다). 따라서 내보내기를 사용할 필요가 없습니다 export
.
관련된:
bash
쉘의 시작 파일에서 시작할 필요는 없습니다 . ~/.profile
실행 중인 시스템에서 로그인 쉘 변경을 허용하지 않는 경우 특정 쉘(또는 로그인 쉘과 관련된 해당 파일)을 시작해야 할 수도 있습니다. 주목해야 할 점아니요다른 쉘이 이미 파일을 실행하고 있으면 다른 쉘을 시작하십시오. 그렇지 않으면 무한 루프에 빠질 수 있습니다.
exec
코드에 추가하는 코드는 ~/.bash_profile
필요하지 않습니다. 나는 이것이 구문 분석되는 방식이라고 생각합니다 ~/.bashrc
(대화형 쉘을 시작한 다음 대화형 bash
쉘이 그것을 읽습니다 ~/.bashrc
). 더 좋은 방법은 다음과 같이 한 파일 소스를 다른 파일 소스로 사용하는 것입니다 ~/.bash_profile
.
if [[ -f $HOME/.bashrc ]]; then
source "$HOME/.bashrc"
fi
그런 다음 설정하십시오 PS1
( 또는 ~/.bashrc
를 만질 필요가 없음 ).HOME
TERM
이 명령이 수행하는 또 다른 작업은 env -i
. 당신이 가지고 있지 않는 한매우 구체적인 이유이러한 이유로 일반 쉘 시작 파일에서는 이 작업을 수행하면 안 됩니다.
답변2
bash에서 인용매뉴얼 페이지:
bash가 이 옵션을 사용하여 대화형 로그인 셸이나 비대화형 셸로 호출되면
--login
먼저 파일/etc/profile
(파일이 존재하는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후~/.bash_profile
,~/.bash_login
, 를 순서대로 찾아 존재~/.profile
하고 읽을 수 있는 첫 번째 파일부터 명령을 읽고 실행합니다.--noprofile
이 옵션을 사용하면 쉘이 시작될 때 이 동작을 비활성화할 수 있습니다.로그인 쉘이 종료되면 bash는 파일이
~/.bash_logout
존재하는 경우 해당 명령을 읽고 실행합니다.로그인 쉘이 아닌 대화형 쉘을 시작하면 bash는 해당 파일이 존재하는 경우 해당 파일
/etc/bash.bashrc
에서 명령을 읽고 실행합니다~/.bashrc
.--norc
이 옵션을 사용하면 이를 억제할 수 있습니다. 이 옵션은 bash가 및 에서 명령을 읽고 실행하도록 합니다.--rcfile file
file
/etc/bash.bashrc
~/.bashrc
따라서 쉘을 시작하는 방법에 따라 많이 달라집니다.
PS1
모든 면에서 활발하게 활동하고 싶다면로그인쉘(예:su - <user>
telnet 을 통해 로그인할 때ssh
)에 이것을 입력하세요.윤곽.PS1
모든 면에서 활발하게 활동하고 싶다면로그인하지 않았습니다쉘(예: 데스크톱 환경에서 다른 터미널을 엽니다.)bashrc.- 두 경우 모두 활성화하려면 두 파일 모두에 넣어야 합니다. 또는 (일부 Linux 버전에서는 적어도 시스템 전체에서 이 작업을 수행합니다.)/etc/구성 파일그리고/etc/bash.bashrc),원천.bashrc내부에. 윤곽.
답변3
PS1
거기에 있어야합니다 .bashrc
. 에서 설정할 수도 있습니다 .profile
.
데비안은 거기에서 .bashrc를 얻습니다:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi