I'm running Zsh, with my current directory in my path, but the script doesn't run when used without ./
Read these statements executed in my terminal to understand the context (the »
is my shell prompt character):
» ls
Makefile node_modules package.json README.md src test tst
» echo $PATH
.:[all_my_other_directories]
» cat test
echo "test";
nodeunit tst/
» ./test
test
OK: 2 assertions (1ms)
» test
» which test
./test
Notice that on the which test
points to the right spot, but test
doesn't run it.
I know that putting my local directory in front of my path is a bad idea, but I've changed the path to having .
at the end and it doesn't change anything.
I would greatly appreciate any help!
The keyword test
is reserved because it is actually a shell builtin. To compound the confusion, there is also a shell command also called test
.
Use a different name instead =)
@sampson-chen is completely right. One addition: to check what exactly you will run use
type test
, it will give you
test is a shell builtin
and thus resolve the problem. Don’t use which
, it always looks for a command. type
is equivalent to whence -v
thus you can use the former instead.