bash 프롬프트는 로그인할 때마다 재설정됩니다.

bash 프롬프트는 로그인할 때마다 재설정됩니다.

나는 물었다이 문제얼마 전 쉘에서 경로가 표시되지 않는 문제가 있었습니다. 최근에 나는 .bashrc소스를 얻지 못한 채(이것은정상적인 관행? ). 현재 쉘 명령 프롬프트는 다음과 같습니다:

-bash-4.3#

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

root@ubuntu2011:~#

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

ps .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

관련 정보