UNIXおよび互換環境における、ソフトリンクの実現するための仕組みのこと。
同様の目的に用いられるハードリンク(あるいは単にリンク)が持つ、同一ファイルシステム内でしか使用できないという欠点を解決するために導入された。
具体的には、ファイルの中身にリンク先のポインタとなる情報(パス名、ファイル名)が入り、ディレクトリエントリにはシンボリックリンクであるという情報が書き込まれる。
ハードリンクでは、ファイルにリンクされた名前は完全に平等で、どれか一つがそのファイルの本当の名前で他は別名、などということは無い。対してシンボリックリンクは、あくまで情報として他のファイルの名前を持つ特殊なファイルに過ぎない。
シンボリックリンクは参照するファイルの情報としてその名前しか保持していないため、実際にその参照名のファイルにアクセスしてみるまで、そのファイルの各種属性や、存在するか否かを知ることはできない。逆に言うと、存在しないファイルへのシンボリックリンクも作成することができる。またリンクを作成する機構がアトミックであることを利用して、ファイルロックにも使用されることがある。
シンボリックリンクは非常に便利ではあるが、場当たり的に使用すると混乱を招くので注意が必要である。
ファイルには本当にパスしか書かれないため、ファイルサイズはパスの長さとなる。
但し、そのファイルサイズのファイルが、実際にファイルシステム上のデータブロックにあるとは限らない。なぜなら、ext2ファイルシステムなどでは高速シンボリックリンク(fast symbolic link)と呼ばれるものが実装されているからである。
この技術では、リンク先の名前はデータブロックではなく、inode自身に格納される。当然、inodeの容量は限られているため、あまりにも長い名前のリンクは高速シンボリックリンクでは実装できない。高速シンボリックリンクのリンク先の名前は、最大で60文字までである。
格納できない長さであればデータブロックを使うが、さもなくば使わない。実際にデータブロックを消費しているかどうかは、duコマンドなどで確認できる。
具体的には、"ln -s 本名 別名" のようにする。
例えば、"/dev/ttyS0" に "/dev/modem" という別名を付けるには、"ln -s /dev/ttyS0 /dev/modem" とする。