비로그인 쉘 문제

비로그인 쉘 문제

일반적으로 내 터미널 프롬프트는 다음과 같습니다.

username place$

이제는 보여주기만 해

bash-4.2$

모든 색상 설정이 손실됩니다. (터미널 프로필에 동일한 색상 구성표가 있지만 색상이 표시되지 않습니다.)

무슨 일이 일어나고 있는지 전혀 모릅니다(그리고 이것을 검색하는 방법도 모릅니다).

처음부터 변경되었습니다. Eclipse와 Maven을 사용하고 있습니다. 새 터미널을 열었지만 새 터미널에 색상이 없습니다.

참고: ~/.bashrc 파일은 없지만 ~/.bash_profile은 있습니다.

답변1

프롬프트 변수가 설정되지 않을 수 있으므로 $PS1내장된 기본값이 사용됩니다.\s-\v\$

Bash가 대화형으로 시작되면 구성 파일(일반적으로 ~/.bashrc또는 ~/.bash_profile존재한다고 가정)을 가져옵니다. 이는 고급 프롬프트가 설정되는 방식입니다. 에서 man bash:

부르다

[...] bash가 --login 옵션을 사용하여 대화형 로그인 쉘 또는 비대화형 쉘로 호출되면 먼저 /etc/profile 파일(파일이 존재하는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후 찾습니다.~/.bash_profile, ~/.bash_login,그리고 ~/.프로필,그와 같은 순서로 […]

[...] 로그인 쉘이 아닌 대화형 쉘을 시작할 때 bash는 다음 명령을 읽고 실행합니다. ~/.bashrc,파일이 존재하는 경우.

프롬프트 설정 실패는 로그인 쉘과 비로그인 쉘이라는 두 가지 상황에서 발생할 수 있습니다. 디스플레이 관리자를 사용하여 GUI에 직접 로그인하는 경우 가상 콘솔로 전환하지 않는 한(예: CtrlAlt+F1에서 F6을 통해) 로그인 쉘이 발생하지 않습니다 . 그러나 새 로그인 셸을 명시적으로 열어 GUI에서 bash 로그인 프로필을 테스트할 수 있습니다 bash -l.

비로그인 쉘 문제

일반 GUI 터미널 등에서 문제가 발생하는 경우 ~/.bashrc파일이 누락되었거나 전역 파일의 소스를 제외하도록 편집되었을 수 있습니다 /etc/bashrc.

  • 존재하지 않는 경우 새 사용자를 위해 생성하기 위한 ~/.bashrc것이 있어야 합니다 . /etc/skel/.bashrc이 파일을 홈 디렉토리에 복사하면 다음에 열 새 셸에 기본 프롬프트가 나타납니다.

  • 존재 하는 경우 ~/.bashrc어딘가에 소스 라인이 있는지 확인하십시오 /etc/bashrc.

    . /etc/bashrc
      -OR-
    source /etc/bashrc
    

    존재하지 않는 경우 파일이 존재하는지 확인하고(적어도 대부분의 Linux 배포판에서는 존재해야 함) 다음과 같은 줄을 ~/.bashrc.

로그인 쉘 문제

로그인 쉘과 비로그인 쉘 모두에서 이 문제가 발생하는 경우 문제는 위와 동일할 수 있습니다. 만약 그런 일이 일어난다면오직로그인 셸의 경우 위 인용문에 언급된 로그인 셸용 파일 중 하나가 없거나 ~/.bashrc대부분의 Linux 배포판에서 일반적으로 제공되는 파일을 얻지 못합니다. 이러한 파일이 없으면 ~/.bash_profile해당 파일을 만듭니다.

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

대부분의 경우 이를 통해 구성을 파일( ~/.bashrc)에 저장할 수 있습니다.


어떤 작업을 해도 프롬프트가 표시되지 않으면 프롬프트를 만들어 ~/.bashrc다음과 같은 방법으로 입력할 수 있습니다.

if [ "$PS1 ]; then
    PS1= .... # see below
fi

이는 $PS1이 이미 설정되어 대화형 셸에 대한 기본값을 갖고 있기 때문입니다. 다른 곳에서 이 값을 사용하여 이것이 대화형 환경인지 확인할 수 있기 때문에 다른 방식으로 설정하고 싶지 않기 때문입니다.

Bash 매뉴얼 페이지에는 사용자 이름 및 현재 작업 디렉토리와 같은 동적 기능을 사용하여 프롬프트를 설정하는 방법을 설명하는 PROMPTING 섹션이 포함되어 있습니다. 예:

PS1="\u \w:"

가이드가 있습니다여기에 색상을 사용하세요. 인쇄되지 않는 문자를 \[및 로 묶어야 합니다 \](이 내용은 색상에 대한 답변 끝 부분에서 논의됨).

답변2

이것을 ~/.bashrc 및 ~/.bash_profile에 영향을 받은 사용자의 루트로 붙여넣으면 됩니다.

# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi

답변3

보안상의 이유로 Cygwin bash를 업그레이드해야 했습니다.

이전 bash = 4.1.10(4)-2009년경 릴리스(i686-pc-cygwin)

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

새로운 bash = 4.4.12(3)-2016년경 릴리스(i686-pc-cygwin)

완전히 동일한 모양과 느낌을 얻으려면 다음을 추가해야 합니다 .bashrc.

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

참고: 포함cd $HOME

답변4

DBA가 데이터베이스 설치를 위해 oracle 사용자를 생성하려고 할 때 동일한 문제가 발생했습니다. 그는 항목을 변경하는 대신 일부 사용자 프로필에 필요한 파일을 삭제했습니다.

문제가 없는 다른 사용자로부터 다음 기본 파일을 복사하여 문제를 해결했습니다.

  1. /home/username/.bashrc
  2. /home/username/.bashrc_profile
  3. /home/username/.bashrc_logout
  4. /home/username/.bashrc_history

이 파일의 설정/텍스트를 변경할 필요가 없습니다.

세션에서 로그아웃했다가 다시 로그인하세요. 색상과 로그인 프롬프트를 사용하여 기본 셸(일반적으로 bash)을 복원해야 합니다.

관련 정보