When running scripts in bash, I have to write
$ ./manage.py syncdb
$ manage.py syncdb
-bash: manage.py: command not found
user:/home/user$ cd /usr/bin
Because on Unix, usually, the current directory is not in
When you type a command the shell looks up a list of directories, as specified by the
PATH variable. The current directory is not in that list.
The reason for not having the current directory on that list is security.
Let's say you're root and go into another user's directory and type
sl instead of
ls. If the current directory is in
PATH, the shell will try to execute the
sl program in that directory (since there is no other
sl program). That
sl program might be malicious.
sl part was just an example. The directories in
PATH are searched sequentially and when a match is made that program is executed. So, depending on how
PATH looks, typing a normal command may or may not be enough to run the program in the current directory.