표적

표적

표적

비슷한 질문을 여러 번 받았지만 원하는 방식으로 구현되는 것을 본 적이 없습니다. 저는 다음과 같은 목표를 달성하고 싶습니다.

  • 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루트 사용자에 대한 심볼릭 링크를 만드는 것이 효과적이었습니다.

관련 정보