내 서버 중 하나에서 프롬프트는 [user @ host path]입니다. 실제로 "tab"을 눌러 경로를 자동으로 채울 수 있습니다.
그러나 새로운 우분투 서버에서 그것은 단지 달러 기호입니까?
내 서버 중 하나에서 프롬프트는 [user @ host path]입니다. 실제로 "tab"을 눌러 경로를 자동으로 채울 수 있습니다.
그러나 새로운 우분투 서버에서 그것은 단지 달러 기호입니까?
답변:
두 가지 질문을하므로 두 가지 모두에 대답하겠습니다.
쉘이 지원하지 않거나 탭 완성이 설정되어 있지 않기 때문입니다.
이 문제를 해결하려면 먼저 쉘이 무엇인지 찾아야합니다. 쉘을 즐기는 머신에서 다음을 실행하십시오.
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
선택한 쉘에 적합한 경로로 대체 하십시오.
때문에 프롬프트 환경 변수 $PS1
, $PS2
그리고에 이렇게. 이러한 것들은 쉘간에 이식성이없는 경향이 있으므로 다음은 가능한 후보자를위한 몇 가지 링크입니다.
bash
는 Bash 변수 ( & c 포함) 및 프롬프트 인쇄 ( 의 긴 이름 ) 페이지와 함께 광범위한 매뉴얼 을 제공 합니다. 에 다음 줄을 추가하십시오PS1
PROMPT_COMMAND
PS1
~/.bashrc
export PS1='[\u@\h \w] '
tcsh
가 온라인 매뉴얼 상의 섹션과 (단지 그 사람 페이지), 프롬프트 환경 변수를. 에 다음 줄을 추가하십시오~/.tcshrc
set prompt='[%n@%m %~] '
zsh
갖는 사용자 가이드 A를, 프롬프트에 대한 간단한 가이드 뿐만 아니라, 수동 에 매우 상세한 참조하면서 신속한 확장 . 에 다음 줄을 추가하십시오~/.zshrc
export PS1='[%n@%m %~] '
배쉬가 유일한 쉘은 아닙니다.
PS1을 설정하는 .profile 또는 .bashrc가없는 간단한 문제이거나 로그인 쉘이 전혀 bash가 아닐 수 있습니다.
Bash는 gnu readline
탭 완성과 같은 작업에 사용 합니다. 이것은 복잡한 주제이며 readline에는 자체 사용자 구성 파일이 있습니다.
참조 man bash
, man sh
및 man 3 readline
. Bash가에 응답합니다 --version
. 많은 리눅스 시스템에서 /bin/sh
실제로 bash는 아니지만 일반적으로의 주름진 버전입니다 ash
.
dash
않고 ash
? 내가 이런 것을 읽은 줄 알았는데
나는 당신이 bash를 사용하지 않고 있지만 sh와 프롬프트가 올바르게 설정되지 않았다고 생각한다 (sh로 가능하다면).
다음을 입력하여 현재 쉘을 얻을 수 있습니다. echo $SHELL
bash를 시작하려면 다음을 입력하십시오. bash
sh
. 에코 $SHELL
는이라는 환경 변수를 인쇄합니다 SHELL
. 이 환경 변수는 단순히 쉘을 가리키며 bash에 의해서만 설정됩니다. 현재 프로세스의 일부 부모가 bash 일 수 있음을 약하게 나타 내기 때문에 실행중인 쉘을 결정하는 데는 거의 쓸모가 없습니다.
/bin/sh
yes 라는 실행 파일이 있습니다. 그러나 이름이 인 쉘은 없습니다 sh
. 내가 생각할 수있는 ash
, ksh
, csh
, bash
, zsh
,와 tcsh
. 첫 번째는 리눅스와 NetBSD에서 일반적인 / bin / sh이고, 마지막은 일반적인 FreeBSD 쉘이고, 다른 것은 선택적 쉘입니다. 많은 데스크탑 환경은 / bin / sh를 ash로 유지하면서 사용자 로그인 쉘을 bash로 변경합니다.
sh
는 Bourne 쉘입니다. en.wikipedia.org/wiki/Bourne_shell 일부 시스템 (Solaris)에는 여전히 재 구현 중 하나 (ash, dash, bash, ksh, zsh)의 사본이 아닌 Bourne 쉘 버전이 제공됩니다.
로그인 스크립트 중 하나에 PS1이라는 변수를 설정해야합니다 (예 : / etc / profile 또는 ~ / .bashrc). 배포판에 따라 다릅니다.
예 : http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
pwd
현재 작업 디렉토리의 이름을 인쇄하도록 입력 할 수 있습니다 . 그리고 탭 완성도 작동하지 않는다고 말하는가? (내가 사용하는 일부 컴퓨터에서는 루트로 로그인 한 경우에만 짧은 프롬프트가 표시되고 행복하게 좋은 경고로 그대로 둡니다. 루트로 로그인 해야하는 경우는 거의 없습니다. 루트를 사용하지 않습니다 , 당신은?)