ypchsh가 일부 쉘로 변경되지 않음


2

현재 bash에 있지만 쉘을 tcsh로 변경하고 싶습니다. ypchsh를 사용하고 프롬프트가 표시되면 비밀번호를 입력 한 다음 로그인 쉘을 / bin / tcsh로 변경했습니다. "로그인 쉘이 [도메인]에서 변경되었습니다"라는 메시지가 표시되어 작동하는 것 같습니다. 그런 다음 로그 아웃했다가 다시 로그인했습니다. 현재 쉘을 확인하기 위해 $ 0를 에코했지만 여전히 / bin / bash에 있습니다. 그러나 $ SHELL을 에코하면 / bin / tcsh가 나타납니다. 그리고 ps를 수행하면 tcsh 대신 bash가 실행 중임을 나타냅니다.

다른 문제 해결 단계 : sh 및 ksh와 같은 다른 쉘로 전환하기 위해 동일한 단계를 시도했습니다. 그러나 csh로 변경하면 tcsh로 변경하려는 것과 동일한 결과가 나타납니다. 확인 된 / etc / shells 및 tcsh가 나열됩니다. 나는 또한 exec tcsh를 시도했지만 시스템은 여전히 ​​bash를 실행 중입니다.

학교 계정 에서이 작업을 수행하려고하므로 권한 문제가있을 수 있습니다. 내 반 친구 중 한 명이 자신의 계정으로 셸을 변경할 수 있었지만 권한이 없으면 구성 해야하는 파일과 같은 것이 있습니까?

[user@machine ~]> echo $0
/bin/bash
[user@machine ~]> echo $SHELL
/bin/tcsh
[user@machine ~]> ypchsh
Changing NIS account information for user on machine
Please enter password:

Changing login shell for user on machine
To accept the default, simply press return. To use the
system's default shell, type the word "none".
Login shell [/bin/tcsh]: /bin/tcsh

The login shell has been changed on machine

[user@machine ~]> logout

[user@machine ~]> echo $0
/bin/bash
[user@machine ~]> echo $SHELL
/bin/tcsh
[user@machine ~]> FOO=BAR
[user@machine ~]> ps
  PID TTY          TIME CMD
14549 pts/21   00:00:00 bash
14780 pts/21   00:00:00 ps
[user@machine ~]> exec /bin/tcsh
[user@machine ~]> echo $0
/bin/bash
[user@machine ~]> echo $SHELL
/bin/tcsh
[user@machine ~]> FOO=BAR
[user@machine ~]>

[user@machine ~]> uname -a
Linux machine 2.6.32-696.3.2.el6.i686 #1 SMP Tue Jun 20 00:48:23 UTC 2017 i686 i686 i386 GNU/Linux
[user@machine ~]> /bin/ls -ld
drwx--s--x 49 user group 4096 Sep  1 13:08 .
[user@machine ~]> /bin/*sh
/bin/csh: /bin/csh: cannot execute binary file
[user@machine ~]> /usr/bin/*sh
Usage: amuFormat.sh <Card Type> <drive>
<Card Type> has to be defined in amuFormat.sh itself
<drive> has to be defined in mtools.conf

이 모든 2 차 단계를 수행하여 실행중인 쉘을 확인하십시오. 기본 증거는 무엇입니까? 입력하면 어떻게됩니까 FOO=BAR? 실제로 어떤 쉘을 실행하고 있습니까? 그리고 진심으로? 당신은 시도 exec tcsh하고 여전히 bash에 있습니까? 나는 당신이 우리에게 전체 이야기를 말하지 않는 것처럼 느낍니다.
Scott

@Scott Linux 시스템에 익숙하지 않습니다. "기본 증거"를 찾는 방법과 FOO = BAR을 입력하여 무엇을 의미하는지 설명 할 수 있습니까? 또한 내가 한 명령의 역사를 게시했습니다.
Alice

(0) 업데이트를 제공해 주셔서 감사하지만 >문자를 삭제 $  하고 셸 명령 앞에 삽입 하면 더 명확 합니다. 터미널에서 복사하여 슈퍼 유저에 붙여 넣는 것이 가장 좋습니다. (물론 사용자 이름과 컴퓨터 이름과 같은 민감한 정보를 수정해도 괜찮습니다.) 그러나 쉘 프롬프트가 변경되면이를 표시하십시오. (1) Linux 시스템에 익숙하지 않다고 말합니다. * nix 쉘에 대해 얼마나 많이 이해하고 왜 자신을 바꾸고 싶은지 궁금합니다. (2) type이라고 말할 때 쉘 프롬프트에서 FOO=BARtype FOO=BAR(Enter 다음에옵니다)을 의미 합니다.
Scott

터미널에서 수행 한 작업을 업데이트하고 붙여 넣었습니다. FOO = BAR을 시도했지만 아무것도 한 것처럼 보이지 않습니다. 나는 nix 쉘에 대해 아무것도 몰랐으며 수업 중 연습은 tcsh에서 수행되므로 쉘이 동일하면 따르기가 더 쉽기 때문에 tcsh에 있어야합니다.
Alice

아, 그러나 당신은 그것을 위해 그것을 기본 쉘로 만들 필요는 없습니다 . 모든 쉘은 일반 프로그램과 같은 다른 쉘에서 시작할 수 있습니다.
grawity

답변:


0

쉘이 계속 bash로 돌아가서 exec를 사용하여 tcsh에 들어 가지 못하게하는 이유는 .cshrc 파일에 거기에 표시된 줄이 exec /bin/bash -l있기 때문입니다. 이 문제를 해결하기 위해 해당 라인을 제거했으며 그 시점에서 쉘을 전환 할 수 있습니다.

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