After creating a Python script file, test.py, in my home directory, and running chmod +x test.py to make it executable, and placing #!usr/bin/env as the file header, I expected to be able to run the script from bash on OS X, using:

$ test.py

but bash returned:

-bash: test.py: command not found

The following command worked:

$ ./test.py

Why is the relative path required for this executable script in the present working directory?


The shell searches the execute path ($PATH) for programs when you give it a command to run. Pre-fixing a command with a path, such as ./ prevents the shell from searching and instructs the shell to use a specific program, explicitly specified.

If a program resides in a directory not in the search path then you have to explicitly indicate the path to the program.

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