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

사이트에서이 질문을 아직 찾지 못한 것에 놀랐습니다. 그래서 오늘 $가 왔습니다. 새 사용자로 로그인 한 후 시작됩니다. 내 기본 사용자의 프롬프트가 username@computername:~$로 시작하기 때문에 예상치 못한 일이었습니다.

그러면 어떻게 전환 할 수 있습니까? bash에 대한 다른 셸?

댓글

  • $username@computername:~$ ' 배쉬가 아니었다는 것을 의미하지는 않습니다. ' 프롬프트의 정확한 형식은 PS1 변수에 의해 설정되며 사용자마다 다르게 설정하거나 사용자 지정할 수 있습니다.
  • @mouche Re : @frabjous echo $SHELL 현재 셸이 무엇인지 알아보기 위해.
  • @mouche @frabjous 및 $로 시작하는 것은 실제로 bash에서 일반적입니다. zsh와 같은 일부 bash가 아닌 셸은 상자에서 %를 사용합니다. 다른 셸에서는 기타 사항입니다.
  • @mouche가 /bin/sh 인 경우 ' '는 일반적으로 다른 것에 대한 심볼릭 링크입니다. 나는 ' ls -l /bin/sh를 입력하여 심볼릭 링크를 ' 확인합니다. 어떤 경우에는 무언가에 대한 심볼릭 링크가 동작을 변경하지만 ' bash가 그런식이라고 생각하지 않습니다.
  • @xenoterracide- as /bin/sh 많은 bash 기능을 비활성화 합니다 (POSIX 준수 모드로 전환됨).

답변

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

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

댓글

  • chsh가 셸을 영구적으로 변경합니까 아니면 현재 세션에 대해서만 변경합니까? ?
  • @mouche 영구적으로; /etc/passwd
  • @mouche, chsh(1)의 항목을 변경하면 나열된 셸로만 변경할 수 있습니다. /etc/shells (아마도 사용 가능함). chsh -l에는 대안이 나열되어 있습니다. 일부 (예 : nologin)는 로그인에 사용해서는 안되는 계정에 대해 정의되며 (자신을 잠그는 좋은 방법), 특별한 용도를위한 로컬 추가가있을 수 있습니다.

li>

답변

bash를 입력합니다. 이를 영구적으로 변경하려면 /etc/passwd를 편집하여 기본 셸을 /bin/bash로 변경합니다.

여기 내 /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이 올바르게 설정되지 않은 경우 로그인 할 수 없다는 의미는 아닙니다 (로그인 셸없이 그래픽으로 로그인 할 수 있기 때문에 Arch Linux에서 버그를보고했습니다). /bin/bash/bin/zsh는 모두 유효한 셸입니다. 유효한 셸 목록은 /etc/shells를 참조하세요. 당신의 시스템. 여기에 “관심이 있다면 내 /etc/shells가 있습니다.

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

예, 또는 usermod는 동일한 작업을 수행합니다. 이들은 구조화 된 텍스트 파일과 TIMTOWTDI 일뿐임을 기억하십시오.

댓글

  • passwd
  • 를 수동으로 수정하는 대신 chsh를 사용하는 것이 좋습니다.

  • @Michael /etc/passwd에서 셸을 변경하는 방법은 약 5 개 (POOMA)가 있습니다. ' 어떤 것도 나열하고 싶지 않았습니다. , 왜냐하면 저는 항상 수동으로하기 때문입니다. chsh와 usermod는 둘 다 할 수 있습니다.
  • 구성 파일을 다루는 것은 나쁜 생각입니다 (TM). 오류로 인해 시스템을 사용할 수 없게 될 수 있습니다. 예, 대부분의 경우 유일하고 빠른 방법이지만 극심한주의 로 수행합니다.

답변

chsh 또는 구성 수동 편집이 작동하지 않는 경우 하지만 ~ / .profile 스크립트는 로그인시 실행됩니다. 다음 줄을 추가합니다.

exec /bin/bash --login 

Comments

  • 잠시 둘러 본 후 이것이 필요한 솔루션이었습니다. 감사합니다!
  • 좋은 아이디어, 특히 셸이 시작할 때 파일 소스를 선택한 경우 …
  • touch ~/.bash_profile 또는 그렇지 않으면 bash가 자체적으로 루프를 실행합니다. bash는 ~/.bash_profile가 수행하지 않는 경우 ~/.profile를 사용합니다. id = “81d1d16526″>

존재하지 않습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다