それは可能ですか? sshアクセス(ただし、rootアクセスなし)が可能ないくつかのリモートコンピューターには、これが本当に必要です。
chsh
コマンドを試すことができます。 zshが離れたコンピューターにインストールされていませんか?そうでない場合は、これを行うことができます( zsh FAQ Section 1.7 )から引用)
基本的な考え方は、execを使用して現在のシェルをzshに置き換えることです。多くの場合、これは.profile(シェルがshまたはkshの場合)や.login(cshの場合)などのログインファイルで実行できます。 execは多くの場合かなり寛容ではないため、これを試す前に、ファイルを変更する方法があることを確認してください(FTPなどを介して)。
ホームディレクトリのサブディレクトリbinにzshがある場合は、これを.profileに入れます。
[ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l
または、ログインシェルがcshまたはtcshの場合は、これを.loginに入れます。
if ( -f ~/bin/zsh ) exec ~/bin/zsh -l
(いずれの場合も、-lはzshにログインシェルであることを示します)。
コミットする前にこれが機能することを確認したい場合は、ログインシェルにzshを実行するかどうかを尋ねさせることができます。ボーンのようなシェルに対する次の作業:
[ -f $HOME/bin/zsh ] && {
echo "Type Y to run zsh: \c"
read line
[ "$line" = Y ] && exec $HOME/bin/zsh -l
}
cシェルのようなシェルの場合:
if ( -f ~/bin/zsh ) then
echo -n "Type Y to run zsh: "
if ( "$<" == Y ) exec ~/bin/zsh -l
endif
これを(-lがなくても).cshrcに入れるのは良い考えではありません。少なくとも、cshが何をするのかについてのテストがなければ、everycshのインスタンスがzshに変わり、csh -f
を呼び出さないcshスクリプト(はい、残念ながら一部の人がこれらを記述します)が失敗します。 xtermにzshを実行するように指示する場合は、zshを実行すると同時にシェル環境変数をzshのフルパスに変更します(実際、これはxtermを使用していない場合でも一貫性を保つのに役立ちます)。 .cshrcからzshを実行する必要がある場合、最低限の安全性チェックはif($?prompt)execzshです。
ログインシェルをプロセスリストに-zshとして表示する場合は、zshを-zshにリンクし(たとえば、ln -s〜/ bin/zsh〜/ bin/-zshによって)、execをexec -zshに変更します。 (-zshがパスに含まれていることを確認してください。)これは、-lオプションと同じ効果があります。
脚注:rootアクセス権がある場合は、NISクライアントを含むすべての適切なマシンのzetcが/ etc/shellsにあることを確認してください。そうしないと、そのマシンへのFTPで問題が発生する可能性があります。
Zshをダウンロードする:
wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download
mkdir zsh && unxz zsh.tar.xz && tar -xvf zsh.tar -C zsh --strip-components 1
cd zsh
たとえば、zshを自分でコンパイルできます。
./configure --prefix=$HOME
make
make install
次に、明示的に、またはプログラムで現在のシェルの起動ファイルから起動します(put exec $HOME/bin/zsh -l
適切な場所で)。
マシンにzshがインストールされている場合は、スワップのプロンプトでzsh
を実行するだけで問題ありません。それが機能する場合は、chsh
を試してシェルをスワップするか(ルートなしで機能するはずです)、 ssh
を使用して接続する場合は、ssh -t hostname zsh
自動的に開始します。