로그인할 때마다 bash 프롬프트가 재설정되었습니다.

로그인할 때마다 bash 프롬프트가 재설정되었습니다.

나는 물었다이 질문얼마 전 쉘에 대한 경로가 표시되지 않습니다. 최근에 나는 소스 .bashrc가 제공되지 않는다는 것을 알았습니다 .정상적인 관행?). 현재 쉘 명령 프롬프트는 다음과 같습니다:

-bash-4.3#

을 실행한 후 source .bashrc예상되는 쉘 명령 프롬프트를 얻을 수 있습니다.

root@ubuntu2011:~#

ubuntu2011기계 이름은 어디에 있습니까? 로그인할 때마다 프롬프트가 후자처럼 보이도록 하려면 어떻게 해야 합니까?

추신 : .bashrc출처 :cp /etc/skel/.bashrc ~/.bashrc


업데이트: 내용은 ~/.profile다음과 같습니다.

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n

그리고 echo $BASH반환/bin/bash


업데이트: @terdon의 질문에 대한 답변:

  1. 서버에 어떻게 로그인하나요?

나는 다음으로 로그인하는 데 사용합니다ssh [email protected]root

  1. 해당 명령은 루트로 실행됩니까?

예.


업데이트: 출력 ls -l ~/.{profile,bashrc,bash_profile,bash_login}:

ls: cannot access /root/.bash_login: No such file or directory
-rw-r--r-- 1 root root   63 Dec 24  2012 /root/.bash_profile
-rw-r--r-- 1 root root 3637 May 17 17:00 /root/.bashrc
-rw-r--r-- 1 root root  140 Apr 23  2010 /root/.profile

답변1

이는 을(를) 통해 로그인했기 때문에 발생합니다 ssh. 이는 로그인 쉘과 비로그인 쉘의 차이점으로 귀결됩니다. SSH를 통해 연결하면 로그인 대화형 셸이 실행됩니다. 에 설명된 대로 man bash이러한 종류의 셸은 다음을 수행합니다.

bash가 대화형 로그인 셸로 호출되거나 --login 옵션이 있는 비대화형 셸로 호출되면 먼저 /etc/profile 파일이 존재하는 경우 해당 파일에서 명령을 읽고 실행합니다. 해당 파일을 읽은 후 ~/.bash_profile, ~/.bash_login 및 ~/.profile을 순서대로 찾아서 존재하고 읽을 수 있는 첫 번째 명령을 읽고 실행합니다. 이 동작을 방지하기 위해 쉘이 시작될 때 --noprofile 옵션을 사용할 수 있습니다.

즉, ~/.bashrc로그인 쉘을 실행할 때 기본적으로 무시됩니다. 간단한 해결책은 읽은 파일 중 하나에서 명시적으로 소스를 가져오는 것입니다. 위에서 볼 수 있듯이 로그인 쉘은 먼저 읽기를 시도 ~/.bash_profile하고 그것이 존재하지 않으면 ~/.bash_login을 읽습니다 ~/.profile. 파일 이 있으므로 ~/.bash_profile파일에 다음 줄을 추가해야 합니다.

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

답변2

이것을 ~/.profile에 넣으세요.

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

관련 정보