amazon

28.12.12

ターミナルコマンドの呼び出し先の切り替え

一つのコマンド名対するプログラムが複数インストールされている環境では、ターミナルで、
$ コマンド名
と打つとインストールされているもののうち一つしか起動しない。

この起動する一つというのは、次のようにtypeやwhichで表示される一覧の一番上のものである。

以下の話は、「python」というコマンドを例に取って話を進める
$ type -a python
python is /Library/Frameworks/Python.framework/Versions/2.6/bin/python
python is /Library/Frameworks/Python.framework/Versions/2.7/bin/python
python is /usr/local/bin/python
python is /usr/bin/python
python is /opt/local/bin/python
となっているとき、
$ python
と打つと、/Library/Frameworks/Python.framework/Versions/2.6/bin/pythonのpythonが起動する。

起動するプログラムを変更するにはtypeで表示される順序を変更すればよい。
typeの順序は環境変数PATHの中から順に探してきているので、PATHの順番を変えてやる。

まず、PATHの確認。
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/opt/local/bin:/opt/local/sbin
typeと同じく/Library/Frameworks/Python.framework/Versions/2.6/binが一番先頭になっている。

例としてMacPortsでインストールしたpythonを使うためにはMacPortsのインストール先である/opt/local/binを先頭にに持っきてみる。
$ PATH=/opt/local/bin:$PATH
$ export PATH
または一行で書くなら、
$ export PATH=/opt/local/bin:$PATH
こうすると、
$ echo $PATH
/opt/local/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/opt/local/sbin
となって、
$ type -a python
python is /opt/local/bin/python
python is /Library/Frameworks/Python.framework/Versions/2.6/bin/python
python is /Library/Frameworks/Python.framework/Versions/2.7/bin/python
python is /usr/local/bin/python
python is /usr/bin/python
となる。

そうすると、
$ python
で起動するpythonはMacPortsのpythonになる。

MacPorts内のpythonの切り替えはこちら

0 件のコメント:

コメントを投稿