내 서버에 ssh 할 때 bash에서 어떻게 시작합니까?


29

호스팅 된 데비안 서버가 있습니다. ssh를 통해 로그인하면 sh 환경으로 인사합니다. bash 환경에서 시작하도록 변경하려면 어떻게합니까?

linux  bash  debian  sh 

1
실제로 프로그래밍 문제는 아닙니다. 앞으로 유닉스 / 리눅스 에서 이와 같은 질문을하는 것이 가장 좋습니다 .
tylerl

답변:


33

일반 사용자는 chsh명령을 사용하여 기본 로그인 쉘을 변경할 수 있습니다 . 예를 들면 다음과 같습니다.

chsh -s /bin/bash

다른 옵션은 usermod를 루트로 사용하는 것입니다.

usermod -s /bin/bash username

1
usermod는 매력처럼 작동했습니다. 새 사용자를 추가 할 때 기본값을 bash로 설정하거나 매번 명령을 실행해야하는 방법이 있습니까?

를 사용하는 경우 adduser기본적으로 bash로 설정해야합니다. 기본값은에 구성되어 /etc/adduser.conf있습니다. 그렇지 않으면으로 명시 적으로 쉘을 지정하십시오 useradd.
jordanm

5

/etc/passwd마지막 항목이 기본 쉘인 위치를 편집 합니다. 확인하십시오 /bin/bash.

또는 /bin/shbash 가 아닌 시스템 기본값을 변경할 수 있습니다 .


1
요, 드라이브 바이 다운 보트는 어때? 예를 들어 우분투는 기본적 /bin/sh으로 /bin/dash입니다. 그리고 그것은 가치가 무엇인지에 대한 다른 두 답변은 동일 하고 다른 방법으로 같은 말을 achive. 도대체 무엇이.
Dirk Eddelbuettel

4
수동 편집은 /etc/passwd권장하지 않습니다. 편집 실수로 모든 사용자의 로그인이 중단 될 수 있으며 복구 매체를 복구하거나 단일 사용자 모드로 부팅해야합니다. usermod변경 과 같은 도구가 있습니다 /etc/passwd.
jordanm

1
무의미한 말. '94 년부터 리눅스를 운영하고 있습니다. 결코 파열되지 않았습니다 /etc/passwd.
Dirk Eddelbuettel

2
매우 조심스럽게 들었습니다. 모든 사람이있는 것은 아닙니다. 당신의 업데이트에 대한 또 다른 노트는 출시 /bin/bash로하는 것은 /bin/sh그것을 실행과 동일 --posix바람직하지 않은 결과를 얻을 수있다.
jordanm

저도 1995 년부터 데비안 개발자 / 메인테이너였습니다. 우리는 bash를 기본값으로 사용했으며 여러 가지 이유로 더 간단한 쉘로 전환했습니다. 나는 /bin/bash몇 년 동안 모든 기계에서 쉘로 사용 해 왔습니다 . 보다 구체적인 논증이 필요합니다.
Dirk Eddelbuettel

2

사용자 프로파일을 편집해야합니다. /etc/passwd파일 을 편집하여 직접 수행 하거나 usermod명령을 사용하여 수행 할 수 있습니다. 찾고있는 구문은 다음과 같습니다.

usermod -s /bin/bash joeuser

1

/bin/sh최근 Ubuntu 릴리스의 기본 시스템 셸 은로 구성되어 있습니다 /bin/dash. 단순히 다음 명령을 실행하여 :

sudo dpkg-reconfigure dash

이전 기본값 인으로 다시 변경할 수 있습니다 /bin/bash.

이를 통해 bash사용자 설정 (아니오 chsh또는 usermod) 을 변경하지 않고도 대화식 쉘로 원하는 효과를 얻을 수 있으며 현재 쉘을로 설정 한 모든 사용자에게 적용됩니다 /bin/sh.

이것에 대한 작은 단점은 다음과 같습니다. 우분투 부팅 시간이 약간 증가 할 수 있습니다. dash로드하는 데 필요한 메모리가 적고 실행 속도가 약간 빠르기 때문입니다 (물론 기능에 한계가 있습니다). 그러나 특히 호스팅 환경 에서이 효과를 측정하는 것이 다소 어려울 것이라고 생각합니다.

또한 때때로 bash지원되지 않는 일부 고급 기능을 사용하기 때문에 제대로 작동하지 않는 쉘 스크립트를 보는 것은 성가신 일 dash입니다. 이 레시피를 사용하면 이런 일이 발생하지 않습니다.

자세한 내용은 이 문제 에 대한 우분투 위키를 참조하십시오 .


유스 케이스를 별도로 유지해야합니다. /bin/shPOSIX 호환 쉘 스크립트의 인터프리터로 사용됩니다. 반드시 최고의 대화식 쉘은 아닙니다. 당신이 원하는 경우 bash시스템 쉘로, 당신은 당신의 선택했습니다 로그인 쉘 설정해야합니다 chsh또는 적절한 adduser통화. dpkg-reconfigureuserA가 zsh를 원하고 userB가 bash를 원하고 / bin / sh를 기본 쉘로 사용하려는 경우 사용 하는 것은 좋지 않은 선택입니다.
umläute

userA가 명시 적으로로 구성되어 zsh있고 userB bash는이를 보유하게됩니다. 만약 userC가로 설정 sh했다면 bash, 이는 새로운 사용자를위한 현재 우분투 기본값입니다
mvp

물론 솔루션은 / bin / sh 로 설정 한 다음 교착 상태 인 / bin / sh dpkg-reconfigure zsh로 설정하는 것을 제안했습니다 . 나는 주로 / bin / sh를 좋은 로그인 쉘로 만들기 위해 농구대를 사용하는 대신 로그인 쉘을 쉘로 설정하는 것이 바람직하다고 말합니다. zshdpkg-reconfigure dashdash
umläute

나는 단지 절름발이가 아니라 지적 dpkg-reconfigure dash할 수 있다고 말했다 . 다른 모든 껍질은 그대로 유지됩니다. shbashdash
mvp

1

어떤 이유로 든 공유 계정을 사용하려고하고 기본 셸을 변경할 수없는 경우 다음을 실행할 수 있습니다.

ssh -t <user@hostname> bash -l

다른 쉘로부터 환경을 유지해야하는 경우 먼저 해당 쉘을 실행할 수 있습니다. 예를 들어

ssh -t <user@hostname> ksh -c bash -l

그것은 꽤 잘 작동하지만 왜 -l옵션입니까?
nbkhope

@nbkhope .bashrc가 실행되도록합니다.
UKMonkey

0

chsh또는 usermod나를 위해 작동하지 않습니다,하지만 난 당신이 퍼티를 통해이 작업을 수행 할 수 있다는 것을 발견했다.

로 이동 Connection > SSH하여 설정 Remote commandbash.

exit기본 셸을 사용할 수 없으며 연결이 닫힙니다.

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