WSL の Ubuntu コンソールから Atom を起動できない件

2018/10/18

『改訂4版基礎Ruby on Rails』の P.34 のコラム「Atom をターミナルから起動するには」に次のように記載されています。

macOS、WSL/Ubuntu、MSYS2/MinGW のターミナルから Atom を起動するには、開きたいディレクトリに移動してから「atom .」というコマンドを実行してください。

しかし、

net.js:200
this._handle.open(options.fd);
             ^

Error: EINVAL: invalid argument, uv_pipe_open
    at new Socket (net.js:200:18)
    at createWritableStdioStream (internal/process/stdio.js:164:16)
    at process.getStdout [as stdout] (internal/process/stdio.js:14:14)
    at console.js:246:38
    at NativeModule.compile (bootstrap_node.js:596:7)
    at Function.NativeModule.require (bootstrap_node.js:541:18)
    at setupGlobalConsole (bootstrap_node.js:310:41)
    at startup (bootstrap_node.js:70:7)
    at bootstrap_node.js:608:3

のようなエラーが出てしまいます。

この記事では、この問題への対処法を説明します。


まず、Windows 側で Atom を起動し、Atom のバージョン番号を調べます。「Help」メニューから「About Atom」を選択すると、About タブが開きます。そこに 1.32.2 x64 のような文字列が書かれています。1.32.2 がバージョン番号です。

次に、Ubuntu ターミナルを開きます。そして、次のコマンドを実行します。

$ echo 'alias atom="/mnt/c/Users/XXXX/AppData/Local/atom/app-YYYY/atom.exe"' >> ~/.bashrc
$ source ~/.bashrc

ただし、XXXX の部分は Windows のユーザー名、YYYY の部分はバージョン番号で置き換えてください。

例えば、Windows のユーザー名が kuroda で、Atom のバージョン番号が 1.32.2 であれば、具体的なコマンドは次のようになります。

$ echo 'alias atom="/mnt/c/Users/kuroda/AppData/Local/atom/app-1.32.2/atom.exe"' >> ~/.bashrc
$ source ~/.bashrc

これで解決するはずです。うまくいかない場合は、hermes@oiax.jp までご連絡ください。

なお、上記の問題は、WSL の不具合(バグ)です。Windows 10 October 2018 Update で直る予定です(筆者未確認)。


参考資料: