로그인하려면 비밀번호를 입력하지 않고 user1
다른 Unix 사용자 환경인 에 프로젝트를 실행하고 싶습니다 .user2
"프로젝트"란 다음을 의미합니다.
- 현재 $HOME
-call user2
bash 시작 스크립트를 변경합니다(프롬프트 및 전역 변수를 가져오기 위해).
나는 작은 스크립트를 작성했습니다 switch_user_env.sh
.
HOME="/usr/users/$1"
cd "$HOME"
bash
. /etc/profile
if [ -f "$HOME/.bash_profile" ]; then
. "$HOME/.bash_profile"
fi
if [ -f "$HOME/.profile" ]; then
. "$HOME/.profile"
fi
나는 그것을 이렇게 부른다:. ./switch_user_env.sh user2
현재 쉘이 bash로 올바르게 변경되었지만 시작 스크립트가 호출되지 않았습니다.
무엇이 잘못되었는지 이해하도록 도와주실 수 있나요?
감사해요!
[편집]
switch_user_env.sh
소스 코드는 GitHub에서 찾을 수 있습니다.https://github.com/pierrefevrier/switch-user-env
답변1
왜냐하면 스크립트의 나머지 부분(이후세게 때리다call)은 bash를 종료한 후에 실행됩니다(exit 명령 또는 "Ctrl+d" 입력). 스크립트 내에서 bash를 호출하면 추가 실행을 제어할 수 있습니다.
이것은 업데이트된 버전입니다:
HOME="/usr/users/$1"
cd "$HOME"
SOURCE_PROFILE=/etc/profile
if [ -f "$HOME/.bash_profile" ]; then
SOURCE_PROFILE="$HOME/.bash_profile"
fi
if [ -f "$HOME/.profile" ]; then
SOURCE_PROFILE="$HOME/.profile"
fi
bash --rcfile "$SOURCE_PROFILE"