우분투에서 Bash를 기본 쉘로 만들려면 어떻게해야합니까?


101

나는이 .bash_profile내 홈 디렉토리에 있지만 로그인에서 실행지고 있지 않습니다. 내가 다음을하면 예상대로 일이 나타납니다.

ssh myhost
bash
source ~/.bash_profile

그러나 일반적으로 모든 로그인에 발생합니다. 생각?


3
또한 당신이하지 않아도 확인 ~/.profile또는 ~/.bash_login소스 하나만 세의로. (나는 정확한 순서를 잊었다.)
grawity

3
제목에 다른 질문이 있고 게시물 본문에 다른 질문이있는 이유는 무엇입니까?
pabouk

답변:


170

사용하다:

chsh

비밀번호를 입력하고 사용하려는 쉘의 경로를 명시하십시오.

Bash의 경우 /bin/bash. Zsh에게는 /usr/bin/zsh.


15
한 - 영업 이익은 암호 파일을 편집하는 것이 더 나은 선택이었다, 그러나 이것은 최선의 해답 결정 이유를 확실하지
kdgregory

1
그래, 나에게 이겼어, 이것이 표준 방법입니다.
John T

1
그리고 우분투에서 당신이 사용하고자하는 쉘의 경로는 ... / bin / bash (그리고 / bin / sh는 같지 않습니다)
Harry Wood

49
또는 사용할 수 있습니다sudo chsh -s /bin/bash username
Oleg Vaskevich

7
이 변경 사항을 보려면 로그 아웃 한 후 다시 로그인해야합니다.
닐 트래 프트

37

akira의 답변 외에도 / etc / passwd 파일을 편집 하여 기본 쉘을 지정할 수도 있습니다.

이 예제와 같은 줄을 찾을 수 있습니다 :

john:x:1000:1000:john,,,:/home/john:/bin/sh

쉘은 끝에 지정됩니다.


8
akira가 제안한 'chsh'명령을 사용하는 것이 좋습니다. 실수로 무언가를 망칠 가능성이 적습니다.
Lars Haugseth

5
당신은 / etc / passwd에 쓸 수없는 경우 'chsh 명령'을 언급 사용할 수 없습니다
돌팔이 의사 키호테

1
그러나 수정에 액세스 할 수 /etc/passwd있고 조심해야한다면 John의 대답은 시스템이 제공하는 도구를 잘 활용하는 것입니다.
AJP

3
이 변경 사항을 보려면 로그 아웃 한 후 다시 로그인해야합니다.
닐 트래 프트

2
사용자 암호없이 서버를 실행하는 경우 공개 / 개인 ssh 키를 통해서만 액세스를 제공하는 경우도 마찬가지입니다. chsh에는 비밀번호가 필요합니다.
Keith John Hutchison

4

터미널 프로그램을 확인할 수 있습니다. / bin / bash 대신 / bin / sh를 실행하도록 구성되었을 수 있습니다.

Bash는 로그인 세션에 대해서만 .bash_profile을 실행합니다. .bashrc는 로그인 세션뿐만 아니라 모든 bash 세션에 대해 실행됩니다. .bashrc에서 .bash_profile을 소싱하거나 (순환 종속성을 피하십시오!) / bin / bash -l을 쉘 프로그램으로 실행하도록 터미널 프로그램을 구성하십시오.


2
터미널 프로그램은 새 쉘을 생성하는 원격 시스템의 sshd이므로 문제와 관련이 없습니다.
akira

2

한 가지 대안은 시작 스크립트의 이름을 .profile로 바꾸는 것입니다. 이 파일은 대부분의 유닉스 쉘에 의해 제공됩니다 .


2

bash를 활성화하십시오.

$ /bin/bash

사용자를위한 쉘 변경 :

$ sudo usermod -s /bin/bash username

어디:

  -s, --shell SHELL             new login shell for the user account

2
(1) "bash 사용"이란 무엇을 의미합니까? (2) 사용자가 원격 시스템에서 자신의 로그인 쉘 을 변경하려고 합니다. 왜 sudo그 시스템에 액세스 할 수 있다고 가정 합니까? 다른 사용자의 로그인 셸 변경과 관련하여 지침을 제공하는 이유는 무엇입니까?
G-Man

위에서 제안한대로 chsh를 사용하면 효과가 없었습니다. 이 명령은했다!
Per Lindberg

1

쉘을 기본으로 설정하려면 먼저 다음 내용을보고 컴퓨터에 설치되고 인식되는지 확인하십시오 /etc/shells.

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

그런 다음 chsh셸을 사용 하여 변경하십시오.

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

참고 문헌

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh

0

귀하의 질문에 충분한 정보가 없기 때문에 분명히 같은 문제를 겪었습니다. 비밀번호 입력에 / bin / bash가 이미 설정되어 있다고 가정하면 터미널이 시작되는 방식 일 수 있습니다.

GUI 터미널을 시작하려는 경우 gnome-terminal셸에서 bash 시작 파일을 읽을 것으로 예상 할 수 있습니다. 그러나 이것은 우분투 및 다른 시스템에서는 기본적으로 발생하지 않습니다.

우분투에서 수정 한 방법은 그놈 터미널 환경 설정을 편집하고 시작 명령을로 설정하는 것 bash -l입니다. -l의 약자입니다 --login. 이것은 bash가 로그인 쉘로 시작하도록 지시하여 ssh를 통해 로그인 할 때 시작 스크립트를로드합니다.

나는 이것이 그런 방식에 대한 좋은 근거가 있다고 확신하지만, 리눅스, cywgin 및 macos 시스템에서 동일한 프로파일을 공유함에 따라 놀랍고 약간 성가신 것으로 나타났습니다.

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