シェルコマンドが通らなかったときにやること


こんにちは、みみです。

日頃iMacでひっそり作業をしているのですが、お外でも作業できるように、お下がりのMBPの開発環境を整えていたら、シェルスクリプトで躓いたのでメモしておこうと思います。

前のやり方でやろうとしたらportコマンドが通らなかったのでした。

まずはecho $PATH

あれ、コマンドが通らないなーと思ったら、まず

echo $PATH

と入力すれば、PATHという変数に何が設定されてるか分かります。コマンドのパスを調べる

例えば、portだったら

sudo find / -name "port"

とかして、場所を調べます。

今回は

/opt/local/bin:/opt/local/sbin:/opt/local/lib/mysql56/bin

でした。このパスが設定されていなければ、書き足せばよいです。

zsh + prezto にする(ちょっと寄り道)

と、その前に、シェルの環境をzshにします。
あんまり良くわかってないんですが、兎も角便利なのでzshにしておいたほうが良いらしい。(※ コマンドを通すためには特に必須な作業ではありません。)

https://github.com/sorin-ionescu/prezto
ここのInstallation の1〜4を実行します。

1. zshを開始して

zsh

2. このリポジトリをクローンします

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

3. zshの設定をします

 setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

4. デフォルトのshellをzshに設定します

chsh -s /bin/zsh

これでzshに移行完了。

PATHを通す

zshで通したいコマンドのPATHの設定をします。

vi ~/.zshenv

として、.zshenvを開きます。
(.zshenvはzshの設定ファイル。bashの場合だと.bashrcとかになります。)

#Ensure that a non-login, non-interactive shell has a defined environment.

の上に

setopt no_global_rcs
export
PATH="/opt/local/bin:/opt/local/sbin:/opt/local/lib/mysql56/bin:$PATH"

と書いて保存。このPATHの値は通したいコマンドで変わります。

設定したPATHを反映するためには

source ~/.zshenv

を実行するか
ターミナルを新しいウィンドウ(タブ)で開く必要があります。


この記事を書いた人