■ Linux の Emacs で利用できる設定


【本題】


VirtualBox 上の Ubuntu から Windows Subsystem for Linux(WSL)を経由して Windows 環境にアクセスするための設定(戦略2)です。

戦略の説明は、次のページを参照ください。

本設定は、次のページの「(戦略1)」の設定が行われていることを前提としています。

1) VirtualBox の「設定」->「共有フォルダー」の機能を使って、Ubuntu から Windows のドライブを参照できるように設定する。

※ 共有フォルダーにアクセスするには権限設定が必要です。
※ 設定後は仮想マシンの再起動が必要です。

2) WSL からの Windows アクセスと、VirtualBox の Ubuntu からの Windows アクセスが同じパスとなるように次の設定を行う。
$ sudo ln -s /media/sf_C_DRIVE /mnt/c
※ 「共有フォルダー」の機能で C ドライブ以外の設定も行った場合は、上記と同様の設定を行ってください。

3) Emacs を立ち上げ、scratch バッファ等で次を評価し、動作を確認する。
(os-open-command "/mnt/c")
(os-open-command "/wsl:/mnt/c")
※ 一行目は VirtualBox の Ubuntu でフォルダが開くと思います。一方、二行目は Windows の Explorer でフォルダが開くと思います。

4) Emacs に以下の設定を追加し、設定を評価する。(Emacs の再起動でも構いません。)
(defconst wsl-hostname "wsl") ; ~/.ssh/config で設定したホスト名を指定する

(defun ad-os-open-command (orig-fun &rest args)
  (if (and current-prefix-arg
           (string-match "^/mnt/.\\($\\|/\\)" (nth 0 args)))
      (funcall orig-fun (format "/%s:%s" wsl-hostname (nth 0 args)))
    (apply orig-fun args)))

(advice-add 'os-open-command :around #'ad-os-open-command)

5) Emacs で dired で /mnt/c 以下のフォルダにアクセスし、E と W、C-u E と C-u W をそれぞれ押下してみる。

C-u を付けると、Windows 側のアプリケーションソフトを使ってファイルやディレクトリが起動することを確認できると思います。


<変更履歴>
  • 2016/09/30 このページを作成した。


最終更新:2019年11月03日 09:37