chsh 또는 / etc / passwd에 액세스 할 수없는 경우 기본 쉘을 bash로 변경하려면 어떻게합니까?


8

대학 원격 Linux 계정으로 작업하고 있으며 기본 셸은 csh탭 완성 이 안타깝습니다 . 계정의 기본 셸을 bash어떻게 변경 합니까? chsh사용할 수 없습니다.


1
대학은 계정을 저장하기 위해 어떤 시스템을 사용합니까? ldapmodify작동 할 수 있습니다.
user1686

또는 NIS를 사용 ypchsh하는 경우 적절한 명령이어야합니다.
m000

탭 완성을 원한다면 ~ / .cshrc set filec및에 추가 할 수 있습니다 set autolist.
Hennes

답변:


11

시스템 관리자가 기본 쉘을 변경할 수 있는지 물어봐야 할 것입니다. 그들이 대학에 없었을 때와 같이 그들이 할 수 없거나 그렇지 않을 경우, 내가 사용한 해결 방법은

# Exec bash if using an interactive shell.
if ($?prompt) then
    setenv SHELL /path/to/bash
    exec $SHELL
endif

.cshrc. ( /path/to/bash물론 실제 경로 로 바꿔야 bash합니다. 시스템 제공 버전이 사용자의 취향에 맞지 않는 경우 홈 디렉토리 아래에 있는 버전 일 수도 있습니다 .) 효율성을 위해 가장 좋습니다. 일찍이에서이 작업을 수행하려면 .cshrc추가 피하기 그래서, 가능으로 .cshrc한 번 논쟁이 될 것이다 처리 bash을 대체 csh과정을.


이것은 내 대학에서 나에게 효과가 없었습니다. 아마도 sysadmin과 대화해야 할 것입니다.
2rs2ts

3

당신은 단순히 연결할 수 있습니다

ssh -t yourhost bash

로그인 할 때 Bash 셸을 자동으로 실행합니다.


아래 의견에서 대안을 볼 수 있습니다

ssh -t yourhost exec bash

exec새 프로세스를 실행하고 이전 프로세스를 종료하므로 csh프로세스가 직접 종료됩니다.

APPEND 경우 -l배쉬의 인수로 명령의 끝은, 그것이 로그인 쉘로 취급됩니다 만, 아마도 그것은 필요하지 않습니다.


1
ssh -t yourhost exec -a bash -l bash초기 쉘 내부에서 프로세스로 실행하지 않고 원래 쉘을 완전히 대체합니다.
chepner

@ chepner : 흥미 롭습니다. ssh -t host bash유사한 상황에서 간단한 솔루션을 직접 사용하고 있지만 방법이 더 좋습니다. 전혀 생각하지 못했습니다 exec, 감사합니다! 귀하의 제안으로 게시물을 업데이트하겠습니다.
Daniel Andersson

그러나 bash내장 명령에 인수를 사용하여 약간의 공상을 얻었습니다 exec.
chepner

@chepner : 아 그래, 난 zsh를 기본 셸로와 호스트에 지금 그것을 시도하고 모두 실패 -a하고 -l. 내 대답에서 예제를 수정하겠습니다.
Daniel Andersson

0

내가 찾은 최고의 솔루션은 stackexchange에서 하나였습니다. 다음은 링크 스택 교환 이며 솔루션은 다음과 같습니다.

홈 디렉토리에 .profile 파일을 작성하고 다음에 붙여 넣거나 .profile이 이미있는 경우 끝에 추가하십시오.

case $- in
  *i*)
    # Interactive session. Try switching to bash.
    if [ -z "$BASH" ]; then # do nothing if running under bash already
      bash=$(command -v bash)
      if [ -x "$bash" ]; then
        export SHELL="$bash"
        exec "$bash"
      fi
    fi
esac

0

PAM을 통해 LADP 인증을 사용할 때 많이 검색했습니다. 최상의 솔루션은 사용자 홈 디렉토리의 .profile 파일에 SHELL = / bin / bash exec / bin / bash를 넣는 것입니다

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