シンボリックリンク

コンピュータ科学において、シンボリックリンク(別名:シンボリックリンク、またはソフトリンク)とは、別のファイルまたはディレクトリへのパスを保存することで参照する特別なコンピュータファイルです。 [ 1 ]これにより、対象のコンテンツを複製することなく、代替アクセスパスが提供されます。オペレーティングシステムのサービスを使用するアプリは、シンボリックリンクを他のファイルやディレクトリと同様に扱う場合があり、その性質を調べない限り、それがシンボリックリンクであることを認識できません。シンボリックリンクは、リンク先が移動または削除されると壊れる可能性があります。

シンボリックリンクはUnix系オペレーティングシステムMicrosoft Windowsでサポートされていますが、さまざまな制限があります。シンボリックリンクの代替として、ハードリンクショートカットファイルWindowsシェルオブジェクトなどがあります。

概要

シンボリック リンクは、特別な状況を除いて、パスが参照するファイル システム項目 (ターゲット)として扱われるファイル システムパスを格納する独立したファイルです。シンボリック リンクが削除されても、そのターゲットは影響を受けません。ターゲットが移動、名前変更、または削除されても、シンボリック リンクは自動的には更新または削除されません。そのターゲット パスは何も参照していないため、壊れている、孤立している、無効、またはぶら下がっていると表現される場合があります。シンボリック リンクは、ハード リンクとは異なります。ハードリンクは別のボリュームまたはファイル システム上のターゲットにリンクできませんが、シンボリック リンクはリンクできます。ハード リンクは常に既存のターゲットを参照しますが、シンボリック リンクは何も参照していないパスである可能性があります。

シンボリックリンクは1982年にBSD Unix 4.1aで導入されました。[ 2 ] POSIX標準ではFreeBSDLinuxmacOSなどのほとんどのUnix系オペレーティングシステムで見られるシンボリックリンクが定義されています。IBM 7090CTSSは、 1963年に名前でリンクされたファイルをサポートしました。 [ 3 ] [ 4 ] [ 5 ] 1978年までに、 DECのミニコンピュータオペレーティングシステムとData GeneralのRDOSでいくつかのシンボリックリンクがサポートされました。

シンボリックリンクはコンテキスト依存型または可変型の形式で実装することができ、設定パラメータ、実行時パラメータ、その他の瞬間的な条件に応じてリンク先が変化する。可変シンボリックリンクはパス定義に変数名(ユーザー名や環境固有情報など)が埋め込まれており、標準のシンボリックリンクでは不可能な柔軟性を実現している。NetBSD 、DragonFly BSDDomain/OSはこのようなリンクをサポートしている。[ 6 ] [ 7 ] [ 8 ] Tru64はコンテキスト依存型のシンボリックリンクを使用し、コンテキストはクラスタメンバー番号となる。Pyramid TechnologyのOSxオペレーティングシステムは条件付きシンボリックリンクサポートしている。[ 9 ]

前述のコンテキスト依存のシンボリックリンクは、ファイルシステム階層を再構築し、より直感的またはアプリケーション固有のディレクトリ構造を可能にし、コアシステムの機能やユーティリティを再設計することなくファイルシステムを再編成するのに役立ちます。シンボリックリンク機能は、その性質上、階層型ファイルシステムをツリーではなく有向グラフにするため本来は単純な操作に影響を与える可能性があります。たとえば、ディレクトリの親への移動は、シンボリックリンクでは確実に機能しない可能性があります。一部のUnixシェルは、経験的にツリー型の階層構造を維持しようとしますが、そのため、そのような経験則を持たず、オペレーティングシステムに依存してパスを操作する他のプログラムとは異なる結果を生成します。[ 8 ]

Windows 95にも同様の直感性に関する懸念がありましたが、シンボリック リンクを採用する代わりに、Windows シェル特殊フォルダ、ショートカット ファイルが作成されました (詳細については、 「§ 代替手段」を参照してください)。

Unixライク

使用

Unix系OSでは、lnシェルコマンドはハードリンク(link()API関数経由)[ 10 ]またはシンボリックリンク(symlink()関数経由)[ 11 ]を作成できます。シンボリックリンクを作成するコマンドの構文は次のとおりです。

ln -s "<ターゲットのパス>" "<リンクのパス>"

理想的にはターゲットが存在する必要がありますが、存在しないターゲットへのシンボリック リンクが作成されることもあります。

次の例では、「foo」という空のファイルを作成し、次に「foo」を指す「bar」というシンボリック リンクを作成します。

$ touch foo $ ln -s foo bar 

ほとんどの操作は、リンクをターゲットのエイリアスとして扱います。たとえば、ファイルの内容にアクセスするシェル コマンドは、ターゲット ファイルの内容にアクセスします。ただし、ファイル管理操作はリンクまたはターゲットに対して操作を行うことができます。lstat()[ 12 ] lchown()[ 13 ]readlink()[ 14 ] API は、ターゲットではなく、リンク ファイルに直接適用されます。アプリ (たとえば、lsまたは) は、ターゲットではなくシンボリック リンクを区別して報告するのではなく、findを使用できます。およびAPI 関数はシンボリック リンクに対して操作するようにコーディングされているため、およびコマンド (これらの API を使用) はシンボリック リンク自体に影響します。コマンドには、シンボリック リンクまたはターゲットのいずれかをコピーできるオプションがあります。 lstat()stat()rename()unlink()rmmvcp

このls -lコマンドはシンボリックリンクのターゲットを表示できます。出力には、リンク名、マーク->、そしてリンクのターゲットが表示されます。この例では、ls前の例で作成されたシンボリックリンクが表示されています。

$ ls -l bar lrwxrwxrwx 1 ユーザーグループ 3 8月 4日 18:40 bar -> foo

ストレージ

初期の実装では、リンク パスは通常のファイルに格納されていました。ファイルには対象のパスがテキストとして含まれており、ファイル モード ビットによってファイルがシンボリック リンクとしてマークされていました。このようなシンボリック リンクの報告されるサイズは、リンク先のパスの文字数です。シンボリック リンクのファイル システム パーミッションは使用されません。対象ファイルのアクセス モードは、対象ファイル自身のパーミッションによって制御されます。( FreeBSDNetBSDDragonFly BSD、およびmacOS は、それぞれ[ 15 ] [ 16 ] [ 17 ] [ 18 ]および[ 19 ] [ 20 ] [ 21 ] [ 22 ] APIを介して、シンボリック リンクのファイルパーミッションとファイル属性を変更できます。) lchmod()lchflags()

ストレージ容量とパフォーマンスを向上させるため、高速シンボリックリンクは、ディスク上のファイル情報を格納するために使用されるデータ構造( inode )内にターゲットパスを格納することを可能にしました。この領域には、ファイルに割り当てられたディスクブロックアドレスのリストが格納されます。そのため、ターゲットパスが短いシンボリックリンクは高速にアクセスできます。高速シンボリックリンクを使用するシステムでは、ターゲットパスが利用可能なinode領域を超える場合、多くの場合、元の方法にフォールバックします。元のスタイルは、遡及的に低速シンボリックリンクと呼ばれていました。また、他のオペレーティングシステムや古いバージョンのオペレーティングシステムとのディスク互換性のためにも使用されます。

リンク値をinode内に格納することでディスクブロックとディスク読み取りを節約できますが、オペレーティングシステムはリンク内のパス名を解析する必要があります。この解析には、常に追加のinodeの読み取りが必要となり、通常は他のディレクトリ(場合によっては複数のディレクトリ)の読み取りも必要になります。この処理では、リンクのパス構成要素と一致するものが見つかるまで、ファイルのリストと各ディレクトリのinodeの両方を処理します。リンクが同じディレクトリ内のファイルを指している場合にのみ、「高速シンボリックリンク」は他のシンボリックリンクよりも大幅に優れたパフォーマンスを提供します。

ウィンドウズ

Microsoft Windows は、NTFSおよびReFSファイル システム、および Windows カーネル名前空間内のシンボリック リンクをサポートしています。

NTFSジャンクションとボリュームマウントポイント

Windows 2000以降、NTFSはジャンクションポイント[ 23 ](ソフトリンクとも呼ばれる)をサポートしています。[ 24 ]ジャンクションポイントはシンボリックリンクに似ていますが、ファイルではなくディレクトリにのみリンクします。これらはNTFS再解析ポイントによって実装されます。[ 24 ] Windows 7とVistaは、特定のパスに対して最大31個の再解析ポイントをサポートしています(つまり、Windowsが処理を中止するまでに、特定のパスは最大31個のリダイレクトを持つことができます)。[ 25 ]

また、2000年以降、NTFSはボリュームマウントポイントをサポートしています。通常、Windowsボリュームにドライブ文字が割り当てられます。ボリュームマウントポイントは、ドライブ文字が割り当てられていない別のボリュームのルートへのシンボリックリンクのように機能します。

NTFSバージョン3.1ではシンボリックリンクのサポートが導入されました。Windows XPはNTFS 3.1を部分的に実装しており、シンボリックリンクは含まれていません。そのため、Windows XPでNTFSシンボリックリンクのサポートを有効にするには、サードパーティ製のドライバーが必要です。[ 26 ] Windows Vista以降ではシンボリックリンクのサポートが有効になっています。[ 27 ] NTFSジャンクションポイントとは異なり、シンボリックリンクはファイルまたはリモートサーバーメッセージブロック(SMB)ネットワークパスを指すこともできます。さらに、NTFSシンボリックリンクの実装では、ボリューム間のリンクが完全にサポートされています。ただし、ホスト間のシンボリックリンクを有効にする機能を使用するには、リモートシステムもそれらをサポートしている必要があります。

シンボリックリンクは、 POSIXオペレーティングシステムへの移行とアプリケーションの互換性を支援するために設計されています。Microsoftは、Windows Vistaのシンボリックリンクが「UNIXリンクと同じように機能する」ことを目指しました。 [ 27 ]シンボリックリンクを作成するには、ユーザーアカウントが新しいシンボリックリンクの作成」権限(SeCreateSymbolicLinkPrivilege)を持っている必要があります。この権限は、デフォルトでは管理者のみが持っています。[ 28 ] Windows Vista以降では、作業ディレクトリのパスがシンボリックリンクで終わる場合、現在の親パス参照()は、..シンボリックリンクのターゲットディレクトリではなく、シンボリックリンクの親ディレクトリを参照します。

ユーザーはコマンドプロンプトまたはPowerShellを使用してシンボリックリンクを作成できます。以下のコマンドは、「 」という場所に「Downloads」というシンボリックリンクを作成し、E:\ユーザープロファイル内のダウンロードフォルダを参照します。これはmklink組み込みのシェルコマンドであるため、コマンドプロンプトでのみ機能します。

mklink /DE:\Downloads %UserProfile% \Downloads 

このコマンドのスイッチは、/Dファイルのシンボリックリンクではなくジャンクションポイントを要求します。このコマンドは、ターゲットが存在しない場合でも成功します。

次の PowerShell コマンドも、上記と同じソースとターゲットを持つシンボリック リンクを作成します。

New-Item -Path 'E:\Downloads' -ItemType 'SymbolicLink' -Value "$Env:UserProfile\Downloads"

コマンドプロンプトとは異なり、PowerShell はソースオブジェクトのパスが無効な場合、エラーを返します。その代わりに、PowerShell はソースオブジェクトの種類を正しく判別し、適切な種類のシンボリックリンクを作成します。NTFS シンボリックリンクは、ファイルやフォルダーに加えて、代替データストリームを指すこともできます。次の例では、「 」というファイルのTest.txt「 」代替ストリームを指す「 」というシンボリックリンクを作成します。(この代替ストリームは、Web のマークです。)Zone.Identifier:$DATAnpcap-1.83.exe

New-Item -Path "E:\Test.txt" -ItemType 'SymbolicLink' -Value 'E:\npcap-1.83.exe:Zone.Identifier:$DATA'

シンボリックリンクを作成する低機能関数は、 2008年に導入されたWindows APICreateSymbolicLink()の機能です。ファイルとディレクトリの両方のシンボリックリンクを作成できます。[ 29 ]その後、2021年にMicrosoftは.NET 6にメソッドとメソッドを導入しました。これらは無料でオープンソースです。[ 30 ] [ 31 ]File.CreateSymbolicLink()Directory.CreateSymbolicLink()

Cygwin は、Windows ファイルシステムにおいて POSIX 準拠のシンボリックリンクをシミュレートします。Unix と同一のプログラミングおよびユーザーユーティリティインターフェース(上記参照)を使用しますが、シンボリックリンクの解決時に Cygwin が使用する追加情報を含む Windows ショートカット(.lnk ファイル)を作成します。Cygwin のシンボリックリンクは、解決方法に関しては POSIX 標準に準拠し、ディスク上での表現に関しては Windows 標準に準拠しています。

さらに、CygwinはネイティブWindowsシンボリックリンクをサポートするように設定することができ、Cygwinの外部でも制限なく使用することができます。[ 32 ]これには以下が必要です。

  1. CYGWIN 環境変数を変更してwinsymlinks:nativeを含めます。
  2. Windows では特権ユーザーのみにシンボリックリンクの作成を制限しているため、Cygwin を昇格した権限で実行する

ただし、いくつかの違いがあります。Cygwinでは、作業ディレクトリやアイコンなどのショートカット関連情報を指定する方法がありません。これは、コマンドにそのようなパラメータを指定する場所がないためですln -s。標準的なMicrosoft .lnkファイルを作成するために、Cygwinはユーティリティmkshortcutreadshortcutユーティリティを提供しています。[ 33 ]

Cygwinユーザーズガイドにはこのトピックに関するより詳しい情報が記載されています。[ 32 ] CygwinをベースにしたMSYS2にも同様のwinsymlinks設定がありますが、デフォルトではファイルのコピーになっています。[ 34 ]

次の表は、シンボリック リンク (UNIX ベースと Windows の両方)、ジャンクション ポイント (NTFS)、およびハード リンク (UNIX ベース) のさまざまな側面を比較しています。

シンボリックリンク ジャンクションポイント ハードリンク
リンクを削除するとターゲットも削除されますか? いいえ はい[ a ]減算後の 参照カウントが0の場合のみ
ターゲットを移動してもリンクは有効ですか? いいえ いいえ はい
相対パスは許可されますか? はい いいえ[ b ]該当なし
異なるボリュームにリンクできますか? はい はい いいえ
ファイルにリンクできますか? はい[ c ]いいえ はい
ディレクトリにリンクできますか? はい 部分的[ d ]
  1. ^特殊な工具を使用する場合を除く
  2. ^保存すると絶対パスになります
  3. ^ Windows Vista以降でサポートされています。Windowsの実装はPOSIX準拠ではありません。シンボリックリンクを作成するには、「シンボリックリンクの作成」権限(SeCreateSymbolicLinkPrivilege)が必要です。デフォルトでは、ユーザーアカウントが管理者である場合[ 35 ]、または開発者モードが有効になっている場合(Windows 10 v1703以降)に、この権限が付与されます。 [ 36 ]
  4. ^ POSIXではディレクトリへのハードリンクが許可されていますが、その機能は必須ではありません。最近のファイルシステムでは、ハードリンクをサポートしていない傾向があります。

その他の実装

シンボリック リンクに類似した機能の実装。

初期のMIT

MIT互換タイムシェアリングシステム 1963年頃)と非互換タイムシェアリングシステムはどちらも、リンクファイルがあり、ターゲットファイルの名前はディレクトリエントリで指定されます。[ 3 ] [ 4 ] [ 5 ]

データジェネラルRDOS

Data GeneralNovaコンピュータ用RDOSは、「リンクエントリ」をサポートしています。これは、エントリの名前と別のファイルの名前の両方を含むディレクトリエントリであり、エントリの名前を使用してファイルを参照すると、別のファイルを参照します。[ 37 ]

アミーガ

シンボリックリンクを作成するコマンドは でmakelink、これはハードリンクにも使用されます。dos.library は、ファイルに対してのみ有効な操作を実行しようとすると、ターゲットがソフトリンクであることを示すエラーコードを内部的に返します。そのため、シンボリックリンクをたどるアプリケーションは、明示的にリンクをたどる呼び出しを行い、操作を再試行する必要があります。AmigaDOSシェルリンクを自動的にたどります。

クラシックMac OS

従来の Mac OSでは、アプリケーションやユーザーはエイリアスを使用できます。エイリアスは、シンボリック リンクとは異なり、ターゲットが同じボリューム上の別の場所に移動された場合でも、ターゲットを追跡します。(これは、Unix 系システムのいくつかのシェルの シェル コマンドエイリアスと混同しないでください。)

macOSもエイリアスをサポートしています。エイリアスはなどのUnix APIではサポートされていませんが、 CarbonおよびCocoa の高レベル API open()ではサポートされています。

OS/2

OS/2オペレーティングシステムでは、シンボリックリンクはグラフィカルなWorkplace Shellのシャドウに似ています。しかし、シャドウは完全なオブジェクト指向システムオブジェクトモデルを採用しているため、単純なリンクよりもはるかに強力で堅牢です。例えば、シャドウは名前が変更されたり、リンクのオブジェクトまたはサブジェクトの位置が変更されたりしても、その機能を失うことはありません。[ 38 ]

代替案

ファイルショートカット

一部のオペレーティングシステムのグラフィカルファイルブラウザでサポートされているショートカットは、シンボリックリンクに似ていますが、いくつかの重要な点で異なります。その違いの一つは、ショートカットをたどることができるソフトウェアの種類です。

  • シンボリックリンクはファイルシステムによって自動的に解決されます。ソフトウェアプログラムは、シンボリックリンクにアクセスすると、シンボリックリンクを認識しているかどうかにかかわらず、代わりにリンク先を参照します。
  • ショートカットは、ファイルシステムや、ショートカットを認識しないソフトウェアプログラムでは通常のファイルと同様に扱われます。ショートカットを認識するソフトウェアプログラム(Windowsシェルやファイルブラウザなど)のみが、ショートカットを他のファイルへの参照として扱います。

メカニズムにはさまざまな機能もあります。

  • Windowsのショートカットは通常、絶対パス(ルートディレクトリから始まる)でリンク先を参照しますが、POSIXシンボリックリンクは絶対パスまたは相対パスでリンク先を参照できます。後者は、シンボリックリンクとそのリンク先が、作成時には不明な共通の祖先パスを共有している場合に便利です(例えば、どこにでも解凍できるアーカイブファイルなど)。
  • Windows アプリケーションのショートカットには、宛先に関連付けることができる追加のメタデータが含まれていますが、POSIX シンボリック リンクは絶対パス名または相対パス名として解釈される単なる文字列です。
  • シンボリックリンクとは異なり、Windowsのショートカットは、対象が移動または名前変更された場合でも、対象への参照を維持します。Windowsドメインクライアントは、分散リンクトラッキング[ 39 ]と呼ばれるWindowsサービスに加入することで、関心のあるファイルやフォルダの変更を追跡できます。このサービスは、ファイルやフォルダがネットワークを介して移動された場合でも、ショートカットの整合性を維持します。[ 40 ]さらに、Windows 9x以降では、Windowsシェルは壊れたショートカットを削除する前に、その対象を検索しようとします。

フォルダのショートカット

Windowsシェルでは、ファイルシステム上の通常のディレクトリを「ジャンクションポイント」として使用できます。[ 41 ]これらは Windows シェルに対しては透過的ですが、他の環境では役に立ちません。Windows では、フォルダのショートカットを実装する方法が2つあります。1つ目は、特別な命名規則を使用する方法です。フォルダのショートカットは、次の構文に従う必要があります。Name.{CLSID}[ 41 ] Windowsシェルは、名前全体を関連する CLSID の表示名に置き換えます。たとえば、はTest.{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}Windows デスクトップのショートカットになります。

2番目は次のことを要求している:[ 41 ]

  • フォルダに「読み取り専用」属性を追加します。 [ 42 ]
  • 関数を呼び出してフォルダーをシステム フォルダーにしますPathMakeSystemFolder()
  • フォルダ内に隠しDesktop.iniファイルを配置します。例をDesktop.ini以下に示します。
[.ShellClassInfo] CLSID2 = {0AFACED1-E828-11D1-9187-B532F1E9575D}

Windows シェルのシェルオブジェクト

シェルオブジェクト[ 43 ]またはシェルフォルダはWindowsレジストリで定義されており、一種のシンボリックリンクを実装するためにも使用できます。フォルダショートカットと同様に、シェルオブジェクトはWindowsシェルに対して透過的です。

以下は一般的なテンプレートです。{########-####-####-####-############}、、0x####<Path>プレースホルダーです。

[ HKEY_CLASSES_ROOT \CLSID\{#######-####-####-####-#############}] @ = "表示名"[ HKEY_CLASSES_ROOT \CLSID\{#######-####-####-####-#############}\DefaultIcon] @ = "..." ; アイコンへのパス[ HKEY_CLASSES_ROOT \CLSID\{#######-####-####-####-#############}\InProcServer32] @ = "%SystemRoot%\\System32\\ShDocVw.Dll" "ThreadingModel" = "Apartment"[ HKEY_CLASSES_ROOT \CLSID\{#######-####-####-####-#############}\Instance] "CLSID" = "{0AFACED1-E828-11D1-9187-B532F1E9575D}"[ HKEY_CLASSES_ROOT \CLSID\{#######-####-####-####-#############}\Instance\InitPropertyBag] "Attributes" = 16進数: 15,00,00,00; 次のいずれかを指定できます: ; ; - 絶対ファイル システム パスを含む "Target"。; - "TargetKnownFolder" または "TargetSpecialFolder" も指定されている場合は、相対パスを含む "Target"。 ; - "TargetSpecialFolder" (相対パスを含む "Target" の有無にかかわらず)。; ターゲットの CSIDL を含める必要があります。; - "TargetKnownFolder" (相対パスを含む "Target" の有無にかかわらず)。; ターゲットの GUID を含める必要があります。; Windows Vista 以降でサポートされています。"Target" = "<パス>" "TargetSpecialFolder" = "0x####" "TargetKnownFolder" = "{#######-####-####-####-############}"[ HKEY_CLASSES_ROOT \CLSID\{#######-####-####-####-#############}\ShellFolder] "Attributes" = 16進数: 00,00,00,00

デスクトップ「マイ ドキュメント」フォルダや、コントロール パネル「フォント」フォルダおよび「管理ツール」フォルダは、ファイル システム フォルダにリダイレクトされる シェル オブジェクトの例です。

参照

参考文献

  1. ^ 「パス名解決」 . POSIX .
  2. ^ Bill JoySam Leffler「Surviving with 4.1a bsd」GitHub 、 2023年9月8日閲覧シンボリックリンクや改良されたグループスキームなど、他にも便利な機能がいくつかあります。
  3. ^ a b Walden, David; Van Vleck, Tom編 (2011). 「互換型タイムシェアリングシステム (1961-1973): 50周年記念概要」(PDF) . IEEE Computer Society . 2022年2月20日閲覧. CTSSの開発に伴い、「共通ファイル」と「リンク」を通じて、ユーザーがディスク上のファイルを共有できる手段を提供してきました。
  4. ^ a bクリスマン、パトリシア・A.編(1969年12月31日)。「互換タイムシェアリングシステム プログラマーズガイド」(PDF)。MIT計算センター。 2022年3月10日閲覧ファイル自体ではなく、他のUFDエントリを指すUFDエントリ
  5. ^ a b Corbato, FJ ; Daggett, MM; Daley, RC; Creasy, RJ; Hellwig, JD; Orenstein, RH; Korn, LK (1963). "The Compatible Time-Sharing System A Programmer's Guide" (PDF) . MIT . 2022年11月29日閲覧.リンク: 形式はCopyと同様です。指定されたファイルはコピーされません。
  6. ^symlink(7)  –  NetBSDその他の情報マニュアル: マジックシンボリックリンク。
  7. ^ Brooks Davis (2008). 「FreeBSD用のバリアントシンボリックリンク」(PDF) .
  8. ^ a b Pike, Rob (2000). Plan 9 における字句規則に基づくファイル名、またはドット・ドットを正しく表記する方法(PDF) . Proc. USENIX Annual Tech. Conf.
  9. ^ Neil Brown (2016). 「バリアントシンボリックリンクの事例LWN .
  10. ^link  – システムインタフェースリファレンス、 Single UNIX 仕様、バージョン5、 The Open Group
  11. ^symlink  – システムインタフェースリファレンス、 Single UNIX 仕様、バージョン5、 The Open Group
  12. ^lstat  – システムインタフェースリファレンス、 Single UNIX 仕様、バージョン5、 The Open Group
  13. ^lchown  – システムインタフェースリファレンス、 Single UNIX 仕様、バージョン5、 The Open Group
  14. ^readlink  – システムインタフェースリファレンス、 Single UNIX 仕様、バージョン5、 The Open Group
  15. ^lchmod(2)  –  FreeBSDシステムコールマニュアル
  16. ^lchmod(2)  –  NetBSDシステムコールマニュアル
  17. ^lchmod(2)  –  DragonFly BSDシステムコールとエラー番号マニュアル
  18. ^lchmod(3)  –  DarwinmacOSライブラリ関数マニュアル
  19. ^lchflags(2)  –  FreeBSDシステムコールマニュアル
  20. ^lchflags(2)  –  NetBSDシステムコールマニュアル
  21. ^lchflags(2)  –  DragonFly BSDシステムコールとエラー番号マニュアル
  22. ^lchflags(3)  –  DarwinmacOSライブラリ関数マニュアル
  23. ^ Russinovich, Mark (2016年7月4日). 「Junction」 . Sysinternals . MicrosoftMicrosoft Learn経由.
  24. ^ a b Ashcraft, Alvin (2025年7月8日). 「ハードリンクとジャンクション」 . Windows アプリ開発. Microsoft . 2025年9月30日閲覧Microsoft Learn経由.
  25. ^ 「プログラミングに関する考慮事項(ローカル ファイル システム)」Microsoft Learn
  26. ^ 「Link Shell Extension ウェブサイト」。Link Shell Extension ウェブサイト
  27. ^ a b「シンボリックリンク」 . Windows アプリ開発. Microsoft . 2025年7月8日 – Microsoft Learn経由.
  28. ^ Russinovich, Mark (2007年2月). 「Windows Vistaカーネルの内部:パート1」 . Microsoft Learn . ファイルベースのシンボリックリンク.
  29. ^ Walker, Jim (2024年6月1日). 「CreateSymbolicLinkW 関数 (winbase.h)」 . Windows アプリ開発.
  30. ^ Warren, Genevieve. 「File.CreateSymbolicLink(String, String) メソッド (System.IO)」 . .NET 6 ドキュメント. Microsoft . 2025年9月30日取得Microsoft Learn経由.
  31. ^ Warren, Genevieve. 「Directory.CreateSymbolicLink(String, String) メソッド (System.IO)」 . .NET 6 ドキュメント. Microsoft . 2025年9月30日取得Microsoft Learn経由.
  32. ^ a b「第3章 Cygwinの使用」 . www.cygwin.com . 2021年7月8日閲覧。
  33. ^ 「Windows で Cygwin を効果的に使用する」
  34. ^ 「Coreutils: ln --symbolic はハードリンクを作成します (MSYS2-packages #249)」GitHub
  35. ^ 「シンボリックリンクを作成する」。ITプロフェッショナル向けWindowsクライアントドキュメント。Microsoft 2023年1月18日 – Microsoft Learn経由。
  36. ^ Durr, Yosef (2016年12月2日). 「Windows 10のシンボリックリンク!」 . Windows Experience . Microsoft – Windows Blogs経由.
  37. ^リアルタイムディスクオペレーティングシステム(RDOS)リファレンスマニュアル(PDF) . Data General . 1979年3月. pp.  2-11 – 2-12 .
  38. ^ロハス、ミゲル (2020 年 12 月 16 日)。「事前に決定された Python の異なるバージョンを共有する」マニュアル講師2020 年12 月 20 日に取得
  39. ^ 「ドメイン コントローラー上の分散リンク トラッキング - Windows Server」。2023 年 2 月 23 日。
  40. ^ 「分散リンクトラッキングとオブジェクト識別子」 . Microsoft Learn . Microsoft Corporation. 2021年12月30日. 2025年9月1日閲覧
  41. ^ a b c「名前空間拡張機能の場所の指定」。Windows Shell ライブラリ。Microsoft 2021年1月6日。ファイル システム フォルダーをジャンクション ポイントとして使用する – Microsoft Learn経由。
  42. ^ 「Windows Server 2003、Windows XP、Windows Vista、またはWindows 7では、フォルダーの読み取り専用属性またはシステム属性を表示または変更できません」。support.microsoft.com。 2017年11月17日時点のオリジナルよりアーカイブ
  43. ^ 「シェルインスタンスオブジェクトを使用したシェル拡張機能の作成」。Microsoft Learn。2010年6月29日。