私はここで同じ問題に直面しています。cmd.exe(WSL)からbashへのコマンド転送は機能しません。
しかし、私にとっては、その解決策も効果がありませんでした。
WSLをインストールし、cmd.exeを介して "bet"というコマンドを実行してみました。
- cmd.exeを開く
- タイプ
bash -c -i "bet"
エラーが発生します。
Command 'bet' not found, did you mean:
command 'bget' from deb ax25-tools (0.0.10-rc4-3build1)
command 'bst' from deb buildstream (1.4.1-1)
command 'beet' from deb beets (1.4.9-4)
command 'btt' from deb blktrace (1.2.0-5)
command 'bat' from deb bacula-console-qt (9.4.2-2ubuntu5)
command 'ben' from deb ben (0.9.0ubuntu2)
command 'fet' from deb fet (5.42.2-2build1)
command 'eet' from deb libeet-bin (1.23.3-8)
command 'net' from deb samba-common-bin (2:4.13.17~dfsg-0ubuntu1.20.04.1)
Try: sudo apt install <deb name>
cmd.exeを開き、bashと入力し、Linuxコマンドラインに「bet」と入力してこれを実行しようとすると正常に動作します。
私もこれを試してみましたが、wsl -e "bet"
それも私がやりたいことを達成できません。 (bet命令は私が最後に追加した追加パラメータを受け取りましたが、命令は実行されません。Linuxシェルで直接betを実行すると、命令は実行されます。)
注:BetはFSLに付属の脳抽出ツールです(https://fsl.fmrib.ox.ac.uk/fsl/fslwiki)
答え1
私はWindowsとWindowsについて何も知らないので、このcmd.exe
答えはUnix環境を想定しています。ほとんどのユーザーの観点から見ると、WSLはUnix環境です。
これが使用法に関する質問である場合、cmd.exe
質問は以下でより適切な視聴者を見つけることができます。スーパーユーザーのウェブサイト。
bet
問題は、実行可能ファイルのパスが実行されている非対話型シェルの検索パスにないようです。
いくつかの解決策があります。
実行可能ファイルの正しいパス名を使用してください。
bash -c '/usr/local/fsl/bin/bet'
以下を呼び出す前に、スクリプト内の変数の値を変更してください
PATH
。bash -c
bet
bash -c 'PATH=$PATH:/usr/local/fsl/bin; bet'
PATH
コマンドを起動したら、環境変数に適切なディレクトリパスを追加しますbash -c
。これは、次のいずれかの方法で実行できます。PATH=$PATH:/usr/local/fsl/bin bash -c bet
env PATH="$PATH:/usr/local/fsl/bin" bash -c bet
PATH
現在のシェルの環境を変更して、環境変数に適切なディレクトリパスを追加します。これは、シェルの起動ファイル(通常はシェル~/.bash_profile
の場合bash
)に次のように追加することによって実行できます。PATH=$PATH:/usr/local/fsl/bin
これは、次回シェルセッションにログインするときに適用されます。その後、使用
bash -c bet
質問にコマンドを
-i
実行するbash -c
ときにオプションを含めることもできます。これにより、シェルがインタラクティブになり、~/.bashrc
ファイルが解析されます。だからもう一つの選択肢はPATH=$PATH:/usr/local/fsl/bin
ただし、この
~/.bashrc
ファイルの目的は、起動するたびに実行したくないコマンドの実行を含めることができる対話型タスク用のシェルを設定することですbet
。代わりに、上記の変数割り当てをまったく新しいファイルに追加してから、次からコピーすることもできますbash
。bash -i --rcfile envfile -c bet
...
envfile
新しいファイルがある場所です。ファイルに前のポイントで述べたディストリビューションがある場合は、
bash
次のいずれかを実行して開始できます。BASH_ENV=envfile bash -c bet
env BASH_ENV="envfile" bash -c bet
bash
これにより、インタラクティブシェルとして実行する必要がなくなります(インタラクティブモード~/.bashrc
でシェルを実行すると、ジョブ制御を有効にするなど、デフォルトで解析するだけでなく、シェルにも影響があります)。