Passing command to bash from cmd.exe (WSL) not working

8,208

Running bash as an interactive shell (using -i option) solved my problem.

That is: bash -c -i <command>.

Share:
8,208
fnery
Author by

fnery

Updated on September 18, 2022

Comments

  • fnery
    fnery over 1 year

    I'm on a Windows 10 machine with Windows Subsystem for Linux enabled/configured (Ubuntu). To explain my problem let me present you with two scenarios:

    Scenario 1:

    1. I start a cmd.exe prompt
    2. I run bash in the cmd.exe prompt
    3. (inside bash) I run a given command, called dwiextract in my case (from a neuroimaging analysis software package)

    Works fine suggesting a successful installation of the software package.

    Scenario 2:

    1. I start a cmd.exe prompt
    2. I attempt to pass the exact same command directly to bash from cmd.exe by using the following syntax: bash -c dwiextract

    I get command not found.

    (Note I learned about bash -c here and have used it successfully in other occasions.)

    The following image shows exactly what I've done:

    example_diagram

    My question: Shouldn't these two scenarios be equivalent. Why does Scenario 1 work and Scenario 2 does not work?

    Many thanks.

    • smw
      smw about 6 years
    • fnery
      fnery about 6 years
      Running bash as an interactive shell (using -i option) solved my problem. Thanks steeldriver.
  • Kusalananda
    Kusalananda about 6 years
    ... because the $PATH was not the same in the two shells, and starting an interactive shell forces bash to read the bashrc file, where the PATH is set.
  • BSalita
    BSalita almost 4 years
    I had to use exactly this: wsl -d Ubuntu-20.04 -u robert bash -c -i "cd /mnt/c/fastai2 && conda activate fastai2 && jupyter lab"
  • Jiri Otoupal イり オトウパー
    Jiri Otoupal イり オトウパー about 3 years
    I had tried all options from this thread and nothing works still it says: /bin/bash Command not found