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
로그아웃하기 전에 테스트하세요.