読者です 読者をやめる 読者になる 読者になる

彼女からは、おいちゃんと呼ばれています

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

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

Emacs Git

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

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

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

※今回のエントリーの内容は 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」を追加するという内容です。

;; パスを通す
(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日 追記)

つづきを書きました。

2011年6月16日 追記

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

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

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

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

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