Bash on Ubuntu on Windows から Windows 側の atom を起動する
(Windows 10 Creators Update 適用後の) Bash on Ubuntu on Windows (以下 BoW) 上で $ atom
して Windows にインストールされた atom を起動したい。
結論
とりあえず次のようなエイリアスを設定すると動く。
alias atom='cmd.exe /C "C:\Users\(username)\AppData\Local\atom\bin\atom.cmd"'
引数もちゃんと渡してくれる。
$ atom -h Atom Editor v1.16.0 Usage: atom [options] [path ...] (以下略)
ところで1
実は元から atom
でパスが通っているのだが、試してみると
$ which atom /mnt/c/Users/(username)/AppData/Local/atom/bin/atom $ atom /mnt/c/Users/(username)/AppData/Local/atom/bin/../app-1.16.0/resources/cli/atom.sh: 9 行: pwd: -W: 無効なオプションです pwd: 使用法: pwd [-LP] '/atom.cmd' is not recognized as an internal or external command, operable program or batch file.
というように atom.sh がおかしいと言われる。 atom.sh を見てみると
$ cat /mnt/c/Users/(username)/AppData/Local/atom/app-1.16.0/resources/cli/atom.sh #!/bin/bash # Get current path in Windows format if command -v "cygpath" > /dev/null; then # We have cygpath to do the conversion ATOMCMD=$(cygpath "$(dirname "$0")/atom.cmd" -a -w) else # We don't have cygpath so try pwd -W pushd "$(dirname "$0")" > /dev/null ATOMCMD="$(pwd -W)/atom.cmd" popd > /dev/null fi if [ "$(uname -o)" == "Msys" ]; then cmd.exe //C "$ATOMCMD" "$@" # Msys thinks /C is a Windows path... else cmd.exe /C "$ATOMCMD" "$@" # Cygwin does not fi
というように Cygwin 向けの何かのようだが、コメントのおかげで cmd.exe に Windows 側での atom.cmd のパスを与えればよさそうなことはわかる。 コメントは素晴らしい。
ところで2
atom.exe を試すとどうなるか。
$ which atom.exe
してもパスが通っていないので頑張って書くと
$ /mnt/c/Users/(username)/AppData/Local/atom/atom.exe
なんと atom が起動する。 しかし引数を受け取ってもらえないようで
$ /mnt/c/Users/(username)/AppData/Local/atom/atom.exe -h
*1:Windows PowerShell からでも同様