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
ログアウトする前にテストしてください。