web-dev-qa-db-ja.com

ZSHのデフォルトバージョンをインストール/アップグレード/設定するための決定的な方法は何ですか?

OSX Mountain Lionは、/ bin/zshにZSH4.3.1とともに同梱されています。ダウンロード後、_./configure, make, make check,_および_make install_-バージョン5.0.0、

_which zsh_は引き続き_/bin/zsh/_を返します

_zsh --version_は引き続きzsh 4.3.11 (i386-Apple-darwin12.0)を返します

回答者を支援するための注意事項:
インストールコマンドの実行中にエラーは発生しませんでした。

_/usr/local/bin_には、次の3つのファイルがあります。
_-rwxr-xr-x 2 kevinsuttle admin 622K Aug 20 00:59 zsh_
_-rwxr-xr-x 2 kevinsuttle admin 622K Aug 20 00:59 zsh-5.0.0_
_-rwxr-xr-x 1 kevinsuttle admin 622K Aug 20 00:50 zsh.old_

私の_$PATH_
_$ echo $PATH_
_/Users/kevinsuttle/.rbenv/shims:/Users/kevinsuttle/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin_

回答が必要な質問
1。 ZSHをインストールする最もクリーンな方法は何ですか? (git、homebrew、curl-ingソースから?)
2。インストールコマンドをどこで実行するかは重要ですか?
3。 Mountain Lionに同梱されているバージョンのZSHをアップグレードまたはオーバーライドするにはどうすればよいですか?
4。これが、人々が oh-my-zsh を使用することになった理由ですか?

25
Kevin Suttle

OSXでデフォルトのシェルを次のように設定する必要があります。

chsh -s /usr/local/bin/zsh $USER

OSXに再ログインすると、機能するはずです。

自作の方法

自作を使用することをお勧めします。それは物事をはるかに簡単にします。 http://mxcl.github.com/homebrew/ で説明されているように、homebrewをインストールします。

Homebrewはあなたのものを/ usr/local/binにインストールするので、/ usr/local/binが/ usr/binの前にあることを確認してください。

〜/ .zshrcと〜/ .bashrcに次の行を追加します:

PATH="/usr/local/bin:/usr/local/sbin:$PATH"

Zshをインストールします。

brew install zsh

デフォルトのシェルをzshに設定します。

chsh -s /usr/local/bin/zsh $USER

最後に、brewインストールからzshを使用する許可を設定します。 「/ usr/local/bin/zsh」を「/ etc/shells」ファイルに追加して、zshを許可します。そうしないと、「このアプリケーションを実行する権限がありません。管理者がシェルを不正な値に設定しました。」というエラーが表示されます。

echo "/usr/local/bin/zsh" | Sudo tee -a /etc/shells

OSXのzsh環境のバグを修正することをお勧めします。/etc/zshenvの名前を/ etc/zshrcに変更します

Sudo mv /etc/{zshenv,zshrc}

OSXに再ログインすると、機能するはずです。

問題がある場合は、次のように入力します。

brew doctor
49
rodeinator

私はあなたの質問に答えようとしますが、これは スーパーユーザー に適していると感じています

ZSHをインストールする最もクリーンな方法は何ですか? (git、homebrew、curl-ingソースから?)

必要に応じてソースを取得します。しかし、最もクリーンな方法は、プライベートbinを作成することです。私は、/Users/burhan/bin/が好きで、そこにインストールします。私の意見では、これはあなた以来の最もクリーンなおよび最も単純な方法です他のライブラリ/インストーラー/マジックに依存する必要はありません。

インストールコマンドをどこで実行するかは重要ですか?

いいえ、コマンドにどの引数を指定するかは重要です。特に、ターゲットのインストール場所とライブラリへのパスは重要です。これらを提供しない場合(または事前に環境に設定しない場合)、インストーラーはデフォルトのシステムパスにアイテムを配置します。 thatを実行するには、昇格された権限で、つまりSudoを使用して、またはrootとしてログインしているときにインストーラーを実行する必要があります。

Mountain Lionに同梱されているバージョンのZSHをアップグレードまたはオーバーライドするにはどうすればよいですか?

アップグレードしないことをお勧めします。アドバタイズされたバージョンで出荷されることを期待している他のさまざまなスクリプトにどのような副作用があるかわからないからです。あなたの正気のために、私はこれを避けます。

代わりに、それをビルドしてプライベートビンにインストールし、PATHを適切に指定する場合。出荷されたバージョンを変更せずに、更新されたバージョンを使用できます。

2
Burhan Khalid

OK、Burhanのコメントは、優先バージョンのパスを_.bash_profile_に明示的に追加する必要がある状況を思い出させました。バージョン5.0.0は_/usr/local/bin_にあるので、私の_$PATH_の_.bash_profile_は次のようになります。

_export PATH="$HOME/.rbenv/bin:/usr/local/bin:$PATH"_

そして今、_which zsh_を実行すると、_/usr/local/bin/zsh_が得られます。
および_zsh --version_はzsh 5.0.0 (x86_64-Apple-darwin12.0.0)を返します。

うわー!うまくいけば、これは同じ問題を抱えている人に役立つでしょう。

2
Kevin Suttle

以前、このタイプのアップグレードのために私が思いついた解決策は、おおよそ次のとおりでした。

  • 新しいバージョンをどこかにインストールします(私の場合、fink/sw/binのデフォルト)
  • / bin/bin/zsh =>/bin/zsh.movedでOSがインストールされているバージョンの名前を変更します
  • / binに/ sw/bin/zshインストールへのシンボリックリンクを設定します

これはうまくいったようです。

私が知りたいのは、これがばかげた解決策であるかどうか、もしそうなら、なぜですか?ありがとう

0
essjar