ZSH構成切り替え
別のzshの設定フレームワーク(OH-MY-zshの、zprezto、など)をテストしたい場合や、それらの間のスイッチを、あなたの最善の策は、シンボリック・リンク使用している~/.zsh
、~/.zshrc
、~/.zlogin
、~/.zlogout
、~/.zprofile
、とします~/.zshenv
。各フレームワークのシェルスクリプトを作成して、これらのシンボリックリンクを作成して、切り替えを高速化できます。
フレームワーク構成を独自のフォルダーに入れます。各フレームワークに対して。
- 可能であれば、独自のフォルダーにフレームワークをインストールします。それ以外の場合は、フレームワークをインストールします
- フレームワーク力のインストールにあれば
~/.zsh
、その後、
~/.zsh
最初に電流を保護します。どちらか
~/.zsh
シンボリックリンクを削除します。rm ~/.zsh
、または
~/.zsh
フォルダーを移動します。mv ~/.zsh ~/.zsh.backup
- フレームワークインストーラーを実行します。
- フレームワークフォルダーを独自のディレクトリに移動します。例えば
mv ~/.zsh ~/.oh-my-zsh
。
- フレームワークごとに繰り返します。
完了したら、フレームワークごとにシェルスクリプトを作成して、必要なシンボリックリンクを作成します。zpreztoの例を次に示します。すでに使用しています。
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zprezto
#!/bin/bash
SYMLINKS=".zsh .zshrc .zshlogin .zshlogout .zshprofile .zpreztorc .zshenv .zshrc"
CONFIG_HOME="$HOME/.zprezto"
# check for unexpected error conditions
for sym in $SYMLINKS; do
# report an error and quit if $sym exists and is not a symlink
[[ -e "$HOME/$sym" -a ! -h "$HOME/$sym" ]] && { echo "error: '$HOME/$sym' is not a symlink!"; return 1; }
done
# now create the symlinks now that nothing should go wrong
for sym in $SYMLINKS; do
# remove old symlink if it exists
[[ -h "$HOME/$sym" ]] && rm -f "$HOME/$sym"
# create new symlink
ln -s "$CONFIG_HOME/$sym" "$HOME/$sym"
done
# uncomment next line to start a new zsh shell. CAUTION: each call is a zsh shell inside a zsh shell. Too many calls will put you in limbo :D
#/usr/bin/env zsh
EOF
$ chmod 700 ~/bin/use-zprezto
このスクリプトは非常にシンプルで、すべてのシンボリックリンクが同じパターンで構成されているという事実に依存しています。パターンに従っていないシンボリックリンクのループの後に、削除をコピーして貼り付けて行を作成できます。
完了したら、~/bin/use-zprezto
- ~/bin/use-whatever
または-を使用してzshフレームワークを切り替えます。
変更は、既存のシェルではなく、新しいzshシェルでのみ有効であることに注意してください。
シェルスイッチング
少し危険ですが、もしあなたがそんなに傾いているなら、シェルコマンドにシンボリックリンクを使用して、デフォルトのシェルとしてシンボリックリンクを設定できます。その後、use-*
上記のスクリプトメソッドに従って、デフォルトのシェルを変更できます。
zshの例として...
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zsh
#!/bin/bash
# check for valid shell symlink
if [[ ! -h "$HOME/.shell" ]]; then
echo "error: $HOME/.shell is not a symlink!"
return 1
fi
# remove existing shell symlink if it exists
[[ -h "$HOME/.shell" ]] && rm -f "$HOME/.shell"
# create new shell symlink, but warn user if this fails!
if ! ln -s /usr/bin/zsh "$HOME/.shell"; then
echo "ERROR: failed to create $HOME/.shell symlink. Manually create the symlink or future logins will fail!."
return 2
fi
EOF
$ chmod 700 ~/bin/use-zsh
これが危険なのは、格納されているシェル/etc/passwd
が有効なプログラムでない場合、ユーザーの下でログインできないためです。したがって、注意していない場合はアカウントからロックアウトできます。つまり、~/.shell
シンボリックリンクが壊れているか、対話型プログラムを指していません。ユーザーアカウントでこれを試すことはできますが、これはroot
アカウントにはお勧めできません。
それでも続行したい場合は、
$ ~/bin/use-zsh # ensures ~/.shell exists for chsh
$ echo "$HOME/.shell | sudo tee -a /etc/shells # add symlink to system's list of valid shells
$ chsh -s ~/.shell # changes default shell in /etc/passwd for $USER
zsh
ますか?またはoh-my-zsh
?どれ?