환경 변수를 복사하지 않고 다른 셸로 전환

환경 변수를 복사하지 않고 다른 셸로 전환

tcsh에서 다음을 시도하면:

exec /home/path/to/my/zsh

작동합니다 (Zsh 쉘을 입력했습니다)

하지만 내가 시도하면

exec -c /home/path/to/my/zsh

나는 얻다:

-c Command not found

Zsh 셸로 전환하고 "비어 있는" 상태에서 시작하려면 어떻게 해야 하나요? (즉, 에서 상속된 환경 변수가 없습니다 tcsh).

답변1

왜 이 작업을 수행하려는지는 확실하지 않지만 다음과 같이 할 수 있습니다.

exec env -i /home/path/to/my/zsh

또는 $PATH같은 일부 기본 환경 변수가 누락되어 많은 작업이 작동하지 않을 수 있습니다 .$HOME$TERM

일부 변수를 허용 목록에 추가하고 나머지는 제거하려면 다음을 수행하세요.

exec env -i HOME="$HOME" TERM="$TERM" /home/path/to/my/zsh

시작 시 환경을 복원하려면 tcsh맨 처음에 다음을 삽입하면 됩니다 ~/.tcshrc.

sh -c 'export -p' > ~/.initial-env

그런 다음 다음과 같이 하십시오:

exec env -i sh -c ". $HOME/.initial-env; exec /path/to/zsh"

즉, tcsh시작할 때 환경이 저장되고 zsh가 실행될 때 복원됩니다.

원하는 것이 셸을 변경하는 것인데 zsh이를 수행할 필요가 없다면 chsh( zsh설치되지 않았거나 설치된 것이 20년 전이거나), (15년 전의 추억을 떠올리게 합니다(맙소사!). 완전히 동일한 상황에서( 대신 csh) tcsh​​) 콘텐츠를 다음 ~/.login으로 바꿀 수 있습니다.

setenv SHELL /path/to/zsh
exec $SHELL -l

그리고 당신의.tcshrc

설정은 $SHELL쉘을 지정합니다선호(이것은 쉘을 시작해야 할 때 xterm또는 ...과 같은 vi응용 프로그램이 시작되는 것입니다.)

그것을 당신의 의무에 넣고 ~/.login한 번만 완료되었는지 확인하십시오. tcsh변경한 이후로 나중에 로그인 세션 중에 더 이상 작업이 시작되지 않기를 바랍니다 $SHELL. 환경 변수 정의를 넣든 ~/.login말든 상관 ~/.zprofile없습니다 ~/.profile. 당신한테 달렸습니다.

tcsh -l로그아웃하기 전에 테스트하세요.

관련 정보