MacPortsでインストールしたソフトがvimの外部プログラムで実行できない
魚が表紙になっているGauche本が気になり、Schemeを使ってみたくてMacPortsでインストールしてみた。
【id:ns9tks】さんの
を使って実行してみたところ、*1
zsh: command not found: gosh
と言われてしまった。
あれれっ?と思って、今度はコマンドモードで試すがダメ。他のMacPorts経由でインストールしたMySQLコマンドなどはどうか?と思って実行してみたところ同じ現象。
もちろんタブで補完も効かない。
:!mysql5 zsh: command not found: mysql5
きっとvimが実行するzshにパスがうまく通ってないんだろう・・・
.profileや.zshrcにパスは通してあるのでターミナルからは実行できることは確認できている。
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
うーん、なぜだろう。
もうちょっと調べてみよう。
メモ
:h !
から辿っていった。
:h shell
Shellオプションは色々あるみたい。
:!ls
の!は『オプション'shell' に設定されているシェルコマンドを使います。』とのこと。
この辺をもうちょっと探る。
:shell
で起動した時はgoshコマンドとか使えるから、また別かも。
うーん。
【3/18追記】対応方法
コメントで教えて頂き、試した見たところ外部コマンドでMacPortsでインストールしたコマンドが使えるようになりました。
結果から言いますと、.zshenvにExportのパスを記述するということでした。
どうして.zshenvに記述するとうまくいったかを調べました。
zshの設定ファイルは5つ使用できるようです。
- .zshenv
- .zprofile
- .zshrc
- .zlogin
- .zlogout
各ファイルには優先度や使用される条件などがあって
- ターミナルなどからログインする時に読み込まれる
- .zshenv
- .zprofile
- .zshrc
- .zlogin
- zsh起動時に読み込まれる(zshコマンドを入力する等)
- .zshenv
- .zshrc
- zsh scriptを実行する(zsh hogehoge.zsh等)
- .zshenv
- ログインシェルに設定されていて、ログアウトする時
- .zshlogout
の順で読み込まれるようです。
zsh scriptを実行する時は、.zshenvしか読み込まれないのですね。
なるほど。
きちんと、適した箇所に設定を書くようにしよう。