OS X won't create any symbolic links, creates aliases instead

Let's try a few experiments, and look at a few things.

In a terminal emulator, such as Terminal.app in /Applications/Utilities, go to your home directory (cd ~) and create a directory (mkdir [directory]).

Make sure you go in the directory we just created (cd [directory]).

cd ~
mkdir directory
cd directory

After that, make a file; a simple text file will do:

echo "This is a simple text file" > originalfile.txt
ls -l@

Now, try creating a hard link, like this:

/usr/bin/ln originalfile.txt hardlink.txt

Then, try creating a symbolic link, like this:

/usr/bin/ln -s originalfile.txt symboliclink.txt

Now, open the directory in Finder with open . and make an alias.

In the terminal emulator you opened before, another ls should get us this:

Testarossa:test tonyw$ ls -l@
total 2528
-rw-r--r--  2 tonyw  staff      19 25 Jan 15:51 file.txt
-rw-r--r--@ 1 tonyw  staff  426048 25 Jan 15:52 file.txt alias
com.apple.FinderInfo        32 
com.apple.ResourceFork  850686 
-rw-r--r--  2 tonyw  staff      19 25 Jan 15:51 hard.txt
lrwxr-xr-x  1 tonyw  staff       8 25 Jan 15:53 symbolic.txt -> file.txt

The Finder GUI should result in this, too:

The Finder GUI with the original file, a hard link, and a symbolic link.

Please note that the Finder GUI displays a symbolic link as an alias.

A symbolic link is not the same thing as an alias. A real alias has extended attributes than a symbolic link.

In the Finder GUI, there is no way of telling a hard link is anything but a file.

For any symbolic links, there is an 'l' at the left hand end of the attributes, and the ls command tells us where it points.

When you try this, exactly what do you get?


OS X can create both, but in different ways. As you seem to be using the word alias it is a file (or directory) shortcut that was created in Finder for anything you see listed there, whereas a symlink (symbolic link) can be created in a shell instance started by your terminal app by using the command:

ln -s <source file path><target file path>

A symlink cannot be created directly in a Finder window (indirectly perhaps by calling an AppleScript script from a shell script or vice-versa).

But there is an ambiguity here because there is another kind of alias, which is a user-defined nickname that you can give to a sequence of shell commands when you open a terminal session. For example in a bash shell window:

$ alias listall=ls -al`

This defines a nickname listall for the command ls -al to list all files in the current directory. In this context 'alias' describes command nicknames - alias is actually a bash shell built-in command for creating such nicknames.

I am not an expert on the OS X filesystem, just a user and scripter, but from what I have read the reason why a Finder alias does not break in OS X is because it contains a unique serial number for its target file (called an inode number, that exists for each file and directory) that is independent of its file path. This means that if you move the target to another directory then the alias will still point to it, whereas a symlink would break because it uses the file path of the target.