GNU/Linux >> Linux の 問題 >  >> Linux

WSL (Ubuntu) Bash から Windows 実行可能ファイルを実行するにはどうすればよいですか?

Windows 10 Creators Update (ビルド 1703、2017 年 4 月) では、これがネイティブにサポートされています。 Linux から Windows バイナリを実行できるようになりました...

notepad.exe またはその他の .exe (拡張子が必要で、パス上にある必要があります。一部の古いバージョンではパス全体が必要です)

...次のいずれかを使用してその逆:

  • bash.exe -c command_to_run 例:bash.exe -c ls
  • bash -c command_to_run 例:bash -c ls
  • wsl command_to_run 例:wsl "ls";または、次を使用して実行に使用するディストリビューションを指定します:
    • ubuntu run ls

詳細については、上記のリンク先の記事を参照してください。


使わない理由

$ powershell.exe Start filename

Start xdg-open に相当する Windows ほとんどの Linux または open で これは、「デフォルトのデスクトップ アプリケーションで開く」ことを意味します。開くようにエイリアスするのが好きです。


ネイティブ ソリューション

Windows 10 Insider Preview Update で提供される公式ソリューション (14951) はほとんど忘れ去られていた binfmt_msc に基づいています バイナリを起動するための Linux 機能。 binfmt_misc の登録コマンド このようになります (ここで /init 暫定 binfmt_misc です win-executables の「インタープリター」):

sudo echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register

そして通常のプログラムのように win-executable が起動されます:

$ export PATH=$PATH:/mnt/c/Windows/System32
$ notepad.exe
$ ipconfig.exe | grep IPv4 | cut -d: -f2
$ ls -la | findstr.exe foo.txt
$ cmd.exe /c dir
<ブロック引用>

win-executable がウィンドウ (DrvFs) に常駐していなければならないというわけではありません ) ファイル システム - Linux のファイル システム (VolFs ではありません) ) - 適切な Windows を継承するため 作業ディレクトリ。

cbwin 代替

最新のビルドを入手するまで、プロジェクト cbwin は、WSL 内に 3 つの新しい Linux コマンドをインストールすることによる回避策を提供します。

  • wcmd :cmd.exe を介して win-executable を呼び出します .
  • wrun :CreateProcess と同期して win-executable を呼び出します 、死ぬのを待つ (cmd.exe を使用しない) )。
  • wstart :切り離された (非同期の) コマンドを起動します (cmd.exe を使用) ).

それらを使用するには、次のことを行う必要があります:

<オール>
  • インストールcbwin :
    • 新しい outbash.exe 通常の Windows ファイルシステム (%PATH% のどこかにインストールされます) )、プラス
    • WSL ファイルシステムの 3 つの linux コマンド。
  • この outbash.exe を使用してください C:\Windows\System32\bash.exe ではなく、WSL を開始する (どこにインストールしても)
  • win-executable の前にこれらのコマンドのいずれかを付けます。 wrun notepad .
  • ヒント: 実行可能ファイルが wcmd で起動された場合 または wrun 子は生成されますが、実行可能ファイルが生きている間だけ存続します。

    つまり、notepad.exe を起動しようとしています。 wcmdメモ帳のため、機能しません 起動直後に強制終了 -- wrun を使用 (同期) または wstart (非同期で) この場合。


    Linux
    1. Ubuntuで.exeファイルを実行する方法は??

    2. (C/C++) Windows と Linux の両方で実行できる実行可能ファイルを生成する方法は?

    3. Ubuntu で PhantomJS をセットアップして実行するにはどうすればよいですか?

    1. UbuntuPCでWindowsアプリを実行する方法

    2. Windows 上の Ubuntu で Bash から Sublime Text を開く

    3. bash履歴から重複を削除するにはどうすればよいですか?

    1. Monoで*.exeを実行するようにBashを設定する方法は?

    2. VirtualBox 上の Windows 10 で Ubuntu を実行するにはどうすればよいですか?

    3. Linux マシンにインストールされた OpenGL アプリケーションを Windows マシンから実行するにはどうすればよいですか?