Symbolic links, also known as symlinks, are special files that point to files or directories in other locations on your system. You can think of them like advanced aliases and here’s how to use them in MacOS.
Symbolic links are similar to aliases, except they work in every application on your Mac—including in the Terminal. They’re particularly useful when apps don’t want to work correctly with a regular alias. On macOS, you create symbolic links in the Terminal using the
ln utility. You can’t create them in the Finder. Symbolic links in macOS work similarly to symbolic links in Linux, because both are Unix-like operating systems. Symbolic links in Windows work a bit differently.
What Are Symbolic Links?
In macOS, you can create regular aliases in the Finder. Aliases point at files or folders, but they’re more like simple shortcuts.
A symbolic link is a more advanced type of alias that works in every application on the system, including command-line utilities in the terminal. A symbolic link you create appears to apps to be the same as the original file or folder it’s pointing at—even though it’s just a link.
For example, let’s say you have a program that needs its files stored at /Library/Program. But you want to store those files somewhere else on the system—for example, in /Volumes/Program. You can move the Program directory to /Volumes/Program, and then create a symbolic link at /Library/Program pointing to /Volumes/Program. The program will try to access its folder at /Library/Program, and the operating system will redirect it to /Volumes/Program.
This is entirely transparent to the macOS operating system and the applications you use. If you browse to the /Library/Program directory in the Finder or any other application, it will appear to contain the files inside /Volumes/Program.
In addition to symbolic links, which are sometimes called “soft links”, you can instead create “hard links”. A symbolic or soft link points to a path in the file system. For example, let’s say you have a symbolic—or soft—link from /Users/example pointing to /opt/example. If you move the file at /opt/example, the link at /Users/example will be broken. However, if you create a hard link, it will actually point to the underlying inode on the file system. So, if you created a hard link from /Users/example pointing to /opt/example and later moved /opt/example, the link at /Users/example would still point to the file, no matter where you moved it. The hard link works at a lower level.
You should generally use standard symbolic…