[clue-tech] Questions about $CDPATH

David L. Anselmi anselmi at anselmi.us
Sun Feb 6 11:43:34 MST 2011


Mike Bean wrote:
> mbean at fozzie:~/Dropbox/Documents$ echo $CDPATH
> :/home/mbean:/home/mbean/Dropbox:/home/mbean/Documents:/home/mbean/Dropbox/bin/dotfiles:/home/mbean/Dropbox/bin/scripts

I think you're confused about what a search path is.  It's a list of places the cd command will look 
for a directory that matches what you specify.

So the ones that work appear in directories in CDPATH.  The ones that don't are not in those 
directories.  For example, if CDPATH is /home/mbean then cd mbean won't go to /home/mbean but will 
go to /home/mbean/mbean.

> Here's the results of testing:
> mbean at fozzie:~/Dropbox/Documents$ cd mbean

This is silly because "cd" is a shorter way to get to $HOME.

> mbean at fozzie:~/Music$ cd Documents
> /home/mbean/Documents
> mbean at fozzie:~/Music$ cd Dropbox
> /home/mbean/Dropbox

~mbean is in CDPATH so both of these work.

> mbean at fozzie:~/Music$ cd dotfiles
> bash: cd: dotfiles: No such file or directory
> mbean at fozzie:~/Music$ cd scripts
> bash: cd: scripts: No such file or directory

Even though CDPATH contains ~mbean/Dropbox/bin/{dotfiles,scripts} these fail.  Change CDPATH to 
contain ~mbean/Dropbox/bin and both of these will work.

So if you want to use CDPATH you have to think about what's in it and arrange your directories 
accordingly.

This is congruent with how PATH works.  You include /bin and /bin/ls is found in it.  You don't 
include /bin/ls in PATH (which is obvious since PATH contains directories but is searched for files, 
rather than containing directories that are searched for directories).

Happy Debian Squeeze!
Dave


More information about the clue-tech mailing list