web-dev-qa-db-ja.com

ルートアクセスなしでzshをインストールしますか?

それは可能ですか? sshアクセス(ただし、rootアクセスなし)が可能ないくつかのリモートコンピューターには、これが本当に必要です。

26
Jooj

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で問題が発生する可能性があります。

8
pratnala

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適切な場所で)。

39
Jens

マシンにzshがインストールされている場合は、スワップのプロンプトでzshを実行するだけで問題ありません。それが機能する場合は、chshを試してシェルをスワップするか(ルートなしで機能するはずです)、 sshを使用して接続する場合は、ssh -t hostname zsh自動的に開始します。

2
Nicholas Smith