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:


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

Many thanks.


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

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

|improve this answer|||||
  • 3
    ... 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. – Kusalananda Apr 21 '18 at 18:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.