표적
비슷한 질문을 여러 번 받았지만 원하는 방식으로 구현되는 것을 본 적이 없습니다. 저는 다음과 같은 목표를 달성하고 싶습니다.
- Bash의 프롬프트를
username@hostname directory #
루트 세션이나username@hostname directory $
다른 사용자의 프롬프트로 설정합니다. .bashrc
내 사용자를 위한 파일을 정의하고심볼릭 링크루트 사용자(또는 일반적으로 다른 사용자)의 경우. 여러 사용자를 위해 파일을 복사하고 매번 업데이트할 필요가 없도록 이렇게 하고 싶습니다.bashrc
.
내가 지금까지 가지고 있는 것
# Bash prompt to ``username@hostname directory $ '' in bold
if [ "$(id -u)" = "0" ]; then
PS1="\e[1m\u@\h \w # \e[0m"
else
PS1="\e[1m\u@\h \w $ \e[0m"
fi
이건 좀 그런 작품이에요. 사용자 세션에서 터미널을 시작하면 프롬프트가 예상대로 작동합니다. 그런데 su -
전환한 root
세션을 사용하면 문제가 발생합니다 .
어떤 이유로 .bashrc
소스를 가져오지 못하고 기본 프롬프트( [root@hostname directory]#
)가 계속 표시됩니다. 이렇게 하면 source .bashrc
프롬프트가 내가 원하는 대로 업데이트됩니다( root@hostname directory #
).
질문
내가 원하는 결과를 어떻게 얻을 수 있나요? .bashrc
다른 모든 사용자와 심볼릭 링크되어 특정 사용자로 전환할 때 올바르게 로드되는 파일입니다 .
답변1
해결책
~처럼@ilkkachu댓글에 설명되어 있습니다("감사합니다").
su -
로그인 쉘이 실행되고 Bash는.bashrc
로그인 쉘에서 데이터를 읽지 않습니다. 당신이 가지고 있는.profile
, 또는 , 또는 에서 명시적 으로.bash_profile
가져오지 않는 한.bash_login
. 그래서 당신은 그것을 확인하고 싶을 수도 있습니다.
따라서 source .bashrc
내 사용자에 추가한 .bash_profile
다음 .bash_profile
루트 사용자에 대한 심볼릭 링크를 만드는 것이 효과적이었습니다.