symlinks in bash script aren't working

I'm writing a bash script on Mac OS X that makes a symlink but when I try and open the symlink that I created it doesn't go anywhere and I get an error that it can't find the original.

sudo ln -s $OriginalPath $NewPath

I've also tried this:

sudo ln -s ${OriginalPath} ${NewPath}


Assuming ${OriginalPath} already exists (and if it doesn't, hey, that's your problem):

The first thing I'd look at is to see if the tilde expansion is the problem. Change OriginalPath to the full path name (e.g., /Users/jpc/PathTo/bundle1.bundle). If that fixes the problem, then either just go with that or find out how to turn on tilde expansion in the shell or use the environment variable ${HOME} instead of tilde expansion.

Probably best not to use tilde expansion in the shell script anyway, as you might not be able to make sure that all users running the script will have it turned on.

ln sets the redirect to exactly what you give it, so it'll be interpreted relative to the location of the link. I'm actually not 100% sure how links will handle a ~, but I don't believe bash will expand it within quotes, and since it is a bash expansion, not a general filesystem one, I suspect the redirect will point to an actual directory named ~, which probably doesn't exist. Either figure out the relative path or expand it into an absolute path.

Need Your Help

Populating form fields using TAL/Chameleon

python templates chameleon template-tal

I'm using Chameleon in Python to render my templates.

Is it possible to attach BeanPostProcessor with specific bean initilzation


I am wondering if it is possible to define a BeanPostProcessor class which can only be executed for specific beans.