내가 일하는 유닉스 시스템 관리자는 내 로그인 쉘을 에서 로 변경하는 것을 허용하지 않습니다 ksh
. bash
그는 다양한 변명을 하는데, 가장 재미있는 것은 그들이 모든 스크립트를 작성했기 때문에 ksh
내가 실행하려고 하면 작동하지 않는다는 것입니다. 그 사람이 이런 아이디어를 어디서 얻었는지는 모르겠지만, 그를 설득할 수 없으니 다른 선택이 있을까요?
( chsh
이 컴퓨터에 설치되어 있지만 공개/개인 키 쌍을 사용하여 로그인하고 비밀번호가 없으므로 비밀번호를 chsh
묻는 메시지가 표시될 때 제공할 것이 없습니다.)
답변1
로그인하면 ~/.profile
로그인 쉘(ksh 제공)이 이 파일을 읽습니다. 로그인 쉘이 bash로 대체되도록 지시할 수 있습니다. 취해야 할 몇 가지 예방 조치가 있습니다.
- 로그인 쉘이 대화형인 경우에만 이를 바꾸십시오. 이는 중요합니다. 그렇지 않으면 그래픽 모드로 로그인하는 것이 작동하지 않을 수 있으며(시스템에 따라 다릅니다.
~/.profile
일부 시스템(전부는 아님)은 xdm 또는 이와 유사한 방법을 통해 로그인할 때 이를 읽습니다.) 이와 같은 관용어는ssh foo '. ~/.profile; mycommand'
실패합니다. - 어떤 이유로 실행 파일이 존재하지 않는 경우에도 로그인할 수 있도록 bash를 사용할 수 있는지 확인하세요.
bash를 로그인 셸로 실행할지 여부를 선택할 수 있습니다. 로그인 쉘로 만들 때의 유일한 주요 차이점은 ~/.bash_profile
또는 를 로드한다는 것입니다 ~/.profile
. 따라서 bash를 로그인 쉘로 실행하는 경우에는 매우 주의하거나 ~/.bash_profile
에서 실행하지 않도록 주의하십시오 ~/.profile
. ksh ~/.profile
그래서 나는 이것을 하지 않는 것이 좋습니다.
또한 SHELL
터미널 에뮬레이터와 같은 프로그램이 해당 쉘을 호출하도록 환경 변수를 bash로 설정하십시오.
bash로 전환하는 코드는 다음과 같습니다. 마지막으로 저장하세요 ~/.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
답변2
bash
이것은 약간 번거롭지만 홈 디렉토리에 다음을 포함하는 파일을 생성하여 로그인할 때 사용하는 쉘로 만들 수 있습니다..profile
SHELL=`type -P bash`
exec bash -l
ksh
그러면 세션이 세션으로 대체 됩니다 bash
. 로그인할 때마다 수동으로 새 세션을 시작하는 것처럼 exit
두 번 입력할 필요가 없습니다. 그런 다음 입력^D
bash
echo $SHELL
경로도 반환됩니다 bash
.
답변3
Giles의 답변 bash를 실행할 때 -l 플래그를 추가하여 모든 로그인 프로필 스크립트가 새 bash 쉘에서 시작되도록 해야 합니다. (예: RHEL의 /etc/profile.d/에 있는 내용) 그러면 스크립트는 다음과 같아야 합니다.
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" -l
fi
fi
esac
답변4
솔라리스:
usermod -s /bin/bash root