UNIX ファイルシステムでは,既存のファイルに別の名前を付けて利用すること ができます。この仕組みがリンク(link) です23。UNIX ファイルシステムには,ハードリンク (hard link) とシンボリックリンク (symbolic link) がありますが,ここではシンボ リックリンクのみを取り上げます24。
シンボリックリンクを作成するには,コマンド ln をオプション -s
を
付けて実行します。基本的な実行の書式は
ln -s リンク先のファイル名 作成するリンク名
です。
第 2.5 節の問題 14 で作成した誕生月カレンダー を表示するコマンドが,ホームディレクトリに mybirth という名前のファ イルとして存在するとします。以下では,このファイルへのシンボリックリンク を作成して,その性質を見てみます。
ファイルの中身と実行結果も確認してください。
cd
ln -s mybirth symlink
シンボリックリンクであることを表す印はわかりましたか。ls
ls -F
ls -l
シンボリックリンクでは,ファイルの種類の表示(左端)が l になって
いますね25。また,
ファイル名の表示欄からはリンク先もわかります。
シンボリックリンクのアクセス権は,リンク先のものが引き継がれます。
cat symlink
cat mybirth
./symlink
./mybirth
echo symlink changed
cat コマンドで,symlink とリンク先のファイル mybirth の内 容を比較してください。 また,symlink と mybirth を実行してください。
シンボリックリンクを作ることで,カレントディレクトリとは異なるディ レクトリのファイルを,パス名に代えファイル名で扱うことが可能になり ます。
cat symnow
を実行してみましょう。
しかられますね。リンク先の名前が変わるとシンボリックリンクは無効 になります。
cd
ln -s /bin mybin
ls -l
cd mybin
pwd
ls
cd
pwd
ls
ls mybin
ls -l mybin/pwd
mybin/pwd
mybin/echo now using symbolic link for /bin
rm mybin
ls /bin