알 수없는 쉘에서 bash로 어떻게 전환합니까?


41

사이트에서이 질문을 아직 찾지 못했다는 것에 놀랐습니다. 그래서 오늘 $새로운 사용자로 로그인 한 후 나타났습니다. 메인 사용자의 프롬프트가로 시작하기 때문에 예기치 않은 결과였습니다 username@computername:~$.

그렇다면이 다른 쉘에서 bash로 어떻게 전환합니까?


8
단지 그것이 $등장 username@computername:~$했다고해서 그것이 강타 당하지 않았다는 것을 의미하지는 않습니다. 프롬프트의 정확한 형식은 PS1 변수에 의해 설정되며, 이는 사용자마다 다르게 설정하거나 사용자 지정할 수 있습니다.
frabjous

3
@mouche Re : @frabjous : echo $SHELL현재 쉘이 무엇인지 확인하십시오.
xenoterracide

1
@mouche @frabjous 및 $로 시작하는 것은 실제로 bash에 일반적이며 zsh와 같은 비 bash 쉘은 상자에서 %를 사용하지만 다른 쉘은 다른 것을 사용한다고 생각합니다.
xenoterracide

1
@mouche는 /bin/sh종종 그것이 다른 것에 대한 심볼릭 링크라는 것을 의미하지는 않습니다. ls -l /bin/sh심볼릭 링크가 무엇인지 확인하기 위해 입력하고 싶습니다 . 어떤 경우에는 무언가에 대한 심볼릭 링크가 행동을 변화 시키므로 bash가 그렇게 생각하지 않습니다.
xenoterracide

3
@xenoterracide- bashas를 /bin/sh 사용하면 많은 bash 기능이 비활성화 됩니다 (POSIX 호환 모드로 전환).
Chris Down

답변:


61

알 수없는 쉘이 절대 명령 실행을 지원한다고 가정하면 다음을 시도 할 수 있습니다. /bin/bash

기본 쉘을 변경하려면을 사용 chsh(1)합니다. 샘플 사용법 :chsh -s /bin/bash $USER


1
chsh가 쉘을 영구적으로 변경합니까 아니면 현재 세션에 대해서만 변경합니까?
mouche

10
@mouche 영구적으로; 그것은 귀하의 항목을 변경/etc/passwd
마이클 Mrozek

@mouche chsh(1)는 나열된 쉘 /etc/shells(및 아마도 사용 가능한) 로만 변경할 수 있습니다. chsh -l대안을 나열합니다. 주의 ( nologin로그인)는 로그인에 사용해서는 안되는 계정에 대해 정의되어 있으며 (자신을 잠그는 좋은 방법) 특별한 용도로 로컬에 추가 할 수 있습니다.
vonbrand

19

에 입력하십시오 bash. 이것을 영구적으로 유지하려면 /bin/bash편집 하여 기본 쉘을 로 변경하십시오 /etc/passwd.

여기 내 스 니펫이 있습니다 /etc/passwd.

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin

가장 마지막 필드는 쉘을 포함하며, :유효하거나 유효하지 않은 쉘로 마지막 필드를 수정 하면 작동합니다. /bin/false그리고 /sbin/nologin둘 다 사용자에게 실제 로그인 쉘이 없음을 의미하지만, pam이 올바르게 설정되지 않은 경우 이것이 로그인 할 수 없음을 의미하지는 않습니다 (아치 리눅스에서 버그를보고했습니다. 로그인 쉘). /bin/bash그리고 /bin/zsh모두 유효 포탄입니다, 참조 /etc/shells하여 시스템에 유효한 포탄의 목록. /etc/shells관심이 있다면 여기에 있습니다.

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash

예 , 동일한 작업을 사용 chsh하거나 usermod수행 할 수 있습니다. 이러한 파일은 구조화 된 텍스트 파일과 TIMTOWTDI입니다.


11
chsh수동 편집 대신에 사용하고 싶을 수도 있습니다passwd
Michael Mrozek

@Michael 쉘을 변경하는 약 5 가지 (POOMA) 다른 방법 /etc/passwd이 있습니다. chsh와 usermod는 둘 다 할 수 있습니다.
xenoterracide

구성 파일을 어지럽히는 것은 나쁜 아이디어 (TM)이며 오류로 인해 시스템을 사용할 수 없게 될 수 있습니다. 그렇습니다. 종종 유일한 / 가장 빠른 방법이지만 극도의주의를 기울여 수행하십시오 .
vonbrand

12

경우 chsh 명령 는 config을 편집하거나 수동이되지 작업을하지만, ~ / .profile에 스크립트가 로그인시 실행되는 것,이 줄을 추가합니다 :

exec /bin/bash --login

잠시 둘러 본 후에 이것이 필요한 솔루션이었습니다. 감사!
PearsonArtPhoto

특히 쉘이 스타트
업시

touch ~/.bash_profile그렇지 않으면 bash는 루프에서 실행됩니다. bash는 존재하지 않는 ~/.profile경우에 걸립니다 ~/.bash_profile.
har-wradim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.