Windows ユーザの皆さん、シンボリックリンク使ってますか?
Linux では多用されるシンボリックリンクも Windows ではあまり使う機会が無いと思いますが、実はかなり以前 (Vista以降) から使えるようになっています。
PowerShell での実行方法
シンボリックリンクは mklink
コマンドで作成できます。
そこで、いっちょ使ってやろうかな!と PowerShell を起動して mklink
と入力すると、コマンドが無くて実行できないという事態に陥ります (´・ω・`)
PowerShell では、画像の通り cmd
に mklink
を渡せば実行できます。
シンボリックリンク作成時は管理者権限が必要ですので、管理者権限付きで PowerShell を起動します。
cmd /c mklink "新規symlink名" "既存ファイルのパス"
# リンク先がフォルダの場合
cmd /c mklink /d "新規symlink名" "既存フォルダのパス"
ジャンクションとハードリンク
mklink には他にも類似のリンクを作る機能があり、mklink /j
でジャンクション、mklink /h
でハードリンクが作れます。
これらとシンボリックリンクの違いは色々ありますが、使い分けの明確な基準はありません。
シンボリックリンクとハードリンクの違いについて書きましたので、そちらをご参照ください。
なぜ直接実行できないの?
直接実行できない理由は、mklink が cmd の内部コマンドだからのようです。
PowerShell ではなくコマンドプロンプトからなら、cmd を付けなくても実行可能です。
しかし cmd の内部コマンドが全て PowerShell で直接実行できないわけではなく、start
などは実行できます。
うーん、謎仕様ですね(´・ω・`)