왜 Linux 프롬프트에 로그인 이름과 경로 대신 $가 표시됩니까?


13

내 서버 중 하나에서 프롬프트는 [user @ host path]입니다. 실제로 "tab"을 눌러 경로를 자동으로 채울 수 있습니다.

그러나 새로운 우분투 서버에서 그것은 단지 달러 기호입니까?


1
항상 pwd현재 작업 디렉토리의 이름을 인쇄하도록 입력 할 수 있습니다 . 그리고 탭 완성도 작동하지 않는다고 말하는가? (내가 사용하는 일부 컴퓨터에서는 루트로 로그인 한 경우에만 짧은 프롬프트가 표시되고 행복하게 좋은 경고로 그대로 둡니다. 루트로 로그인 해야하는 경우는 거의 없습니다. 루트를 사용하지 않습니다 , 당신은?)
Arjan

알렉스 당신이 어떤 배포판을 사용하고 있는지 말해 줄 수 있습니까?
반전

우분투를 사용하고 있습니다.
Alex

최신 우분투? 그리고 탭 완성도 작동하지 않는다고 말하는가?
Arjan

탭이 경로를 자동으로 채우지 않는 이유와 프롬프트가 [user @ host path] 대신 달러 기호 인 이유는 두 가지입니다. 답변이 없기 때문에 답변에 투표하는 것이 조금 어렵습니다.
Joseph Holsten

답변:


27

두 가지 질문을하므로 두 가지 모두에 대답하겠습니다.

자동 완성 파일 경로를 탭하지 않는 이유는 무엇입니까?

쉘이 지원하지 않거나 탭 완성이 설정되어 있지 않기 때문입니다.

이 문제를 해결하려면 먼저 쉘이 무엇인지 찾아야합니다. 쉘을 즐기는 머신에서 다음을 실행하십시오.

echo $SHELL

당신은 일반적인를 볼 수 있습니다 /bin/bash, 또는 뭔가 덜 일반적인 같은 /bin/tcsh, /bin/zsh다른 사람의 전부 또는 뭔가.

이제 우분투 시스템에서 쉘을 변경할 수 있습니다. 해당 머신에서 먼저 원하는 쉘이 있는지 확인하십시오. 쉘이 우분투 머신의 다른 위치와 같지 않을 수 있으므로 다음을 입력하여 위치를 확인하십시오.

 which bash

이것은 당신에게 뭔가를 원하는 쉘의 경로를 줄 것이다 /bin/bash, /usr/bin/bash또는 /usr/local/bin/bash. 당신이 떠들썩한 파티가 아닌 다른 쉘을 원한다면 물론, 당신은 말할 것이다 which tcsh, which zsh또는 유사한.

경로가 보이지 않고 대신을 참조 bash not found하면 적절한 패키지를 설치 한 다음 다시 사용 which하여 셸이 설치된 위치를 확인해야합니다.

선택한 쉘의 경로를 사용하여 마지막으로 다음을 실행하여 쉘을 변경할 수 있습니다

chsh -s /bin/bash

/bin/bash선택한 쉘에 적합한 경로로 대체 하십시오.

프롬프트가 [user @ host path] 대신 달러 기호 인 이유는 무엇입니까?

때문에 프롬프트 환경 변수 $PS1, $PS2그리고에 이렇게. 이러한 것들은 쉘간에 이식성이없는 경향이 있으므로 다음은 가능한 후보자를위한 몇 가지 링크입니다.

bashBash 변수 ( & c 포함) 및 프롬프트 인쇄 ( 의 긴 이름 ) 페이지와 함께 광범위한 매뉴얼 을 제공 합니다. 에 다음 줄을 추가하십시오PS1PROMPT_COMMANDPS1~/.bashrc

export PS1='[\u@\h \w] '

tcsh온라인 매뉴얼 상의 섹션과 (단지 그 사람 페이지), 프롬프트 환경 변수를. 에 다음 줄을 추가하십시오~/.tcshrc

set prompt='[%n@%m %~] '

zsh갖는 사용자 가이드 A를, 프롬프트에 대한 간단한 가이드 뿐만 아니라, 수동 에 매우 상세한 참조하면서 신속한 확장 . 에 다음 줄을 추가하십시오~/.zshrc

export PS1='[%n@%m %~] '

6

배쉬가 유일한 쉘은 아닙니다.

PS1을 설정하는 .profile 또는 .bashrc가없는 간단한 문제이거나 로그인 쉘이 전혀 bash가 아닐 수 있습니다.

Bash는 gnu readline탭 완성과 같은 작업에 사용 합니다. 이것은 복잡한 주제이며 readline에는 자체 사용자 구성 파일이 있습니다.

참조 man bash, man shman 3 readline. Bash가에 응답합니다 --version. 많은 리눅스 시스템에서 /bin/sh실제로 bash는 아니지만 일반적으로의 주름진 버전입니다 ash.


1
하지 dash않고 ash? 내가 이런 것을 읽은 줄 알았는데
knittl

2
.profile 또는 .bashrc가없는 경우 +1-Alex가 Ubuntu를 설치할 때 처음으로 계정을 설정 한 경우가 아니면 기본적으로 새 사용자에게는 .bashrc가 없거나 PS1이 설정되어 있지 않습니다.
Cory Plastek

4

나는 당신이 bash를 사용하지 않고 있지만 sh와 프롬프트가 올바르게 설정되지 않았다고 생각한다 (sh로 가능하다면).

다음을 입력하여 현재 쉘을 얻을 수 있습니다. echo $SHELL

bash를 시작하려면 다음을 입력하십시오. bash


다른 쉘로 프롬프트를 설정할 수 있습니다. 라는 쉘이 없습니다 sh. 에코 $SHELL는이라는 환경 변수를 인쇄합니다 SHELL. 이 환경 변수는 단순히 쉘을 가리키며 bash에 의해서만 설정됩니다. 현재 프로세스의 일부 부모가 bash 일 수 있음을 약하게 나타 내기 때문에 실행중인 쉘을 결정하는 데는 거의 쓸모가 없습니다.
DigitalRoss

셸의 프로그램 이름은 sh (/ bin / sh에 있음)입니다. 예, echo $ SHELL은 일반적으로 설정되는 SHELL 변수를 인쇄합니다.
knittl

모든 유닉스 시스템에는 /bin/shyes 라는 실행 파일이 있습니다. 그러나 이름이 인 쉘은 없습니다 sh. 내가 생각할 수있는 ash, ksh, csh, bash, zsh,와 tcsh. 첫 번째는 리눅스와 NetBSD에서 일반적인 / bin / sh이고, 마지막은 일반적인 FreeBSD 쉘이고, 다른 것은 선택적 쉘입니다. 많은 데스크탑 환경은 / bin / sh를 ash로 유지하면서 사용자 로그인 쉘을 bash로 변경합니다.
DigitalRoss

2
@DigitalRoss sh는 Bourne 쉘입니다. en.wikipedia.org/wiki/Bourne_shell 일부 시스템 (Solaris)에는 여전히 재 구현 중 하나 (ash, dash, bash, ksh, zsh)의 사본이 아닌 Bourne 쉘 버전이 제공됩니다.
Chris Johnsen

... 그리고 bash는 Bourne shell, csh 및 ksh의 일부 기능을 상속 한 "Bourne again shell"로 알려져 있습니다.
반전

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.