ln - make hard or symbolic links to files
/usr/bin/ln [-fns] source_file [target]
/usr/bin/ln [-fns] source_file... target
/usr/xpg4/bin/ln [-fs] source_file [target]
/usr/xpg/bin/ln [-fs] source_file... target
In the first synopsis form, the ln utility creates a new
directory entry (link) for the file specified by
source_file, at the destination path specified by target. If
target is not specified, the link is made in the current
directory. This first synopsis form is assumed when the
final operand does not name an existing directory; if more
than two operands are specified and the final is not an
existing directory, an error will result.
In the second synopsis form, the ln utility creates a new
directory entry for each file specified by a source_file
operand, at a destination path in the existing directory
named by target.
The ln utility may be used to create both hard links and
symbolic links. A hard link is a pointer to a file and is
indistinguishable from the original directory entry. Any
changes to a file are effective independent of the name used
to reference the file. Hard links may not span file systems
and may not refer to directories.
ln by default creates hard links. source_file is linked to
target. If target is a directory, another file named
source_file is created in target and linked to the original
If target is a file, its contents are overwritten. If
/usr/bin/ln determines that the mode of target forbids writ-
ing, it will print the mode (see chmod(1)), ask for a
response, and read the standard input for one line. If the
response is affirmative, the link occurs, if permissible.
Otherwise, the command exits.
If target is a file and the -f option is not specified,
/usr/xpg4/bin/ln will write a diagnostic message to standard
error, do nothing more with the current source_file, and go
on to any remaining source_files.
A symbolic link is an indirect pointer to a file; its direc-
tory entry contains the name of the file to which it is
linked. Symbolic links may span file systems and may refer
When creating a hard link, and the source file is itself a
symbolic link, then the target will be a hard link to the
file referenced by the symbolic link, not to the symbolic
link object itself (source_file).
File permissions for target may be different from those
displayed with a -l listing of the ls(1) command. To display
the permissions of target use ls -lL. See stat(2) for more
The following options are supported for both /usr/bin/ln and
-f Link files without questioning the user, even if the
mode of target forbids writing. This is the default if
the standard input is not a terminal.
-s Create a symbolic link.
If the -s option is used with two arguments, target
may be an existing directory or a non-existent file.
If target already exists and is not a directory, an
error is returned. source_file may be any path name
and need not exist. If it exists, it may be a file or
directory and may reside on a different file system
from target. If target is an existing directory, a
file is created in directory target whose name is
source_file or the last component of source_file. This
file is a symbolic link that references source_file.
If target does not exist, a file with name target is
created and it is a symbolic link that references
If the -s option is used with more than two arguments,
target must be an existing directory or an error will
be returned. For each source_file, a link is created
in target whose name is the last component of
source_file. Each new source_file is a symbolic link
to the original source_file. The files and target may
reside on different file systems.
The following options are supported for /usr/bin/ln only:
-n If the link is an existing file, do not overwrite the
contents of the file. The -f option overrides this
This is the default behavior for /usr/xpg4/bin/ln,
and is silently ignored.
The following operands are supported:
A path name of a file to be linked. This can be either
a regular or special file. If the -s option is speci-
fied, source_file can also be a directory.
The path name of the new directory entry to be
created, or of an existing directory in which the new
directory entries are to be created.
See largefile(5) for the description of the behavior of ln
when encountering files greater than or equal to 2 Gbyte ( 2
See environ(5) for descriptions of the following environment
variables that affect the execution of ln: LANG, LC_ALL,
LC_CTYPE, LC_MESSAGES, and NLSPATH.
The following exit values are returned:
0 All the specified files were linked successfully
>0 An error occurred.
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| Availability | SUNWcsu |
| CSI | Enabled |
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| Availability | SUNWxcu4 |
| CSI | Enabled |
| Interface Stability | Standard |
chmod(1), ls(1), stat(2), attributes(5), environ(5), large-
A symbolic link to a directory behaves differently than you
might expect in certain cases. While an ls(1) on such a link
displays the files in the pointed-to directory, an `ls -l'
displays information about the link itself:
example% ln -s dir link
example% ls link
file1 file2 file3 file4
example% ls -l link
lrwxrwxrwx 1 user 7 Jan 11 23:27 link -> dir
When you cd(1) to a directory through a symbolic link, you
wind up in the pointed-to location within the file system.
This means that the parent of the new working directory is
not the parent of the symbolic link, but rather, the parent
of the pointed-to directory. For instance, in the following
case the final working directory is /usr and not
example% ln -s /usr/tmp symlink
example% cd symlink
example% cd ..
C shell users can avoid any resulting navigation problems by
using the pushd and popd built-in commands instead of cd.
Man(1) output converted with