I use the command line often and have been frustrated by the second-class-status that file system aliases have in the command shell. It would be nice if Apple would have the BSD system calls treat aliases the same as soft links, but alas, as of 10.4.2, they have not done so.
Also, file system aliases have some nice features which are not available to soft links, like labels, which cannot be used at all with soft links (well for a couple of seconds, it looks like you can, but they don't stick.) Another difference is that in 10.3, comments also don't stick, though they appear to do so in 10.4 (as a result of being Spotlight comments, probably). And of course, it is possible to create a file system alias using drag and drop. But one problem with using file system aliases instead of soft links is that you can't change your working directory (cd) to an alias of a directory.
So I created a command line executable to return the name of the Original file (in Finder parlence), including following soft links to aliases, and added a function to my .bashrc file to use that executable to get the name, and finally, to use that as the argument to the cd command. If there is no argument, the program calls the built-in cd routine, which changes to the user's home directory. If the argument tests as a directory (including soft link), the built-in cd is called with the given argument, because the system will use the name of the soft link in the path rather than the pointed-to directory. If the argument is a file or a soft link other than a directory, the true name is used as the argument to cd. Finally, if it is some other type of file, that argument is passed to the built-in cd, so the user gets the expected error message.
Here is the bash function I include in .bashrc. Note that the second elif requires double brackets for the test, because it include the logical operator or (||):
function cd {
if [ ${#1} == 0 ]; then
builtin cd
elif [ -d "${1}" ]; then
builtin cd "${1}"
elif [[ -f "${1}" || -L "${1}" ]]; then
path=$(getTrueName "$1")
builtin cd "$path"
else
builtin cd "${1}"
fi
}
And here's the C source code for getTrueName.
Mac OS X Hints
http://hints.macworld.com/article.php?story=20050828054129701