おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

dmg からインストールした Git を Emacs で使うためにパスを通す

さて、3エントリー連続 Git ネタです。あんまり同じネタが続くのは本望ではないのですが、後輩からいくつか質問されたので、ここにメモを残しておきます(情報はシェアしないとね)。

+git: command not found ...だと...!? +git の場所を指定して実行する +パスを通す <<

環境は次のとおりです。Mac 限定でごめんなさい。あと、Cocoa Emacs じゃなくてごめんなさい。おそらく Cocoa Emacs にも共通するハナシだと思うのですが、試していないので何とも言い切れません。

-MacOSX 10.6(Snow Leopard) -Emacs 22.3(Carbon Emacs) -Git 1.7.4

※今回のエントリーの内容は Git 公式サイトから dmg ファイルをダウンロードしてインストールした Git を対象にしています。他の方法で(例えば、MacPorts から)インストールした Git についてはこの限りではありません。 <<

*1. git: command not found ...だと...!?

ええと、まず、Emacs に何も設定していない状態だと、Emacs から

|| M-x shell ||<

でシェルモードに移行し、

|| bash-3.2$ git --version ||<

とかコマンドを打っても、

bash: git: command not found <<

と返ってきて Git が使えません。まずはここからスタートです。

*2. git の場所を指定して実行する

Emacs ではなく)ターミナルから次のコマンドを実行してください。git の場所を確認できます。

|| $ which git ||<

前述のとおり dmg ファイルからインストールした Git であれば、

/usr/local/git/bin/git <<

と返ってくるはずです。

そうすると、Emacs からでも

|| bash-3.2$ /usr/local/git/bin/git --version ||<

と、git の場所を指定してコマンドを打てば、

git version 1.7.4 <<

と正常に返ってくるはず。しかし、毎回毎回 git の場所を指定してコマンドを打つのも面倒なので、あらかじめ Emacs に git の場所を教えておく必要があります。この作業を「パスを通す」といいます。

*3. パスを通す

パスを通すには、Emacs の初期化ファイル(~/.emacs もしくは ~/.emacs.el。最近は ~/.emacs.d/init.el なんかな?)に下記を追加します。環境変数 PATH に「/usr/local/git/bin」を追加するという内容です。

|lisp| ;; パスを通す (setenv "PATH" (concat '"/usr/local/git/bin:" (getenv "PATH"))) ||<

初期化ファイルを保存後、Emacs を再起動してシェルモードで

|| bash-3.2$ git --version ||<

とすれば、今度は正常に

git version 1.7.4 <<

と返ってくるはずです。やったね。

なお、次のコマンドで現在の環境変数 PATH に何が入っているのか確認できます。

|| bash-3.2$ printenv PATH ||<

おそらく下記のようになっているはず。

/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin:/opt/local/bin <<

各要素は「:」によって区切られるので、「/usr/local/git/bin」と「/usr/bin」と...「/opt/loca/bin」が入っていることを確認できます。

やったね。

*予告

さて。実はこのあと、もうひとつ

Emacs からだと、git log でログが途中までしか表示されません... <<

という質問も受けていたのですが、これについてはまた今度書きます。できるだけ早く...

**(2011月6月15日 追記

つづきを書きました。

-Emacs のシェルモードで git log を最後まで表示させる <<

*2011年6月16日 追記

コメントをいただきましたので、追記します。

今回パスを通す作業が必要となったのは、dmg ファイルからインストールした Git というよりもむしろ Emacs 側に原因があります(ターミナル以外から起動した Emacs はターミナルの環境変数を引き継いでいない)。

にもかかわらず dmg ファイルからインストールした Git にハナシを限定した理由は、MacPorts からインストールした Git が /opt/local/bin にインストールされて、かつ Carbon Emacs がデフォルトで /opt/local/bin にパスが通っているため、今回のような作業が不要だったからでした。

この点もきちんと書いておくべきでした。失礼しました。

余談ですが、僕が Emacs を本格的に触るようになったのは id:tomoya さんの下記記事を見たのがきっかけです。その id:tomoya さんから直接コメントをいただけるなんて、大変光栄です。これからもどうぞよろしくお願いします。

-Emacs ビギナーに贈る、これからバリバリ使い隊!!人のための設定講座 その1。 - 日々、とんは語る。

*参考サイト

-SICP 問題 2.26(append/cons/listを、リストに適用した場合の違い) - awacio.log