ashokgelal ashokgelal - 7 months ago 12
Bash Question

Why doesn't "cd" work in a bash shell script?

I'm trying to write a small script to change the current directory to my project directory:

#!/bin/bash
cd /home/tree/projects/java


I saved this file as proj, changed the chmod, copied it to
/usr/bin
. When I call it by:
proj
, it does nothing. What am I doing wrong?

Answer

Shell scripts are run inside a subshell, and each subshell has its own concept of what the current directory is. The cd succeeds, but as soon as the subshell exits, you're back in the interactive shell and nothing ever changed there.

One way to get around this is to use an alias instead:

alias proj="cd /home/tree/projects/java"