Windows10なのにmklinkがない?
PowerShellからGet-Command mklink
とかやってるのに見つからない。
よく調べたら mklink って内部コマンドじゃないか。
知ってるとは思うけど軽く説明すると、DOSコマンドには2種類ある。1つは外部コマンドで、“○○.exe”とか“○○.com”とかいうファイルとして存在している。もう1つは内部コマンドで、こいつはシェルの内部に実装されている。
コマンドプロンプトもこの伝統を引き継いていて、大抵の外部コマンドは C:\Windows\System32 などにファイルとして存在している。そうして、こういう外部コマンドはPowerShellからも実行できる。一方で、内部コマンドはコマンドプロンプトの方に実装されているので、実行するにはcmdを起動させる必要がある。
cmd /c mklink /?
その他、assoc
とかftype
なども内部コマンドだから、PowerShellからは直接使えない。一方で、pause
とかmore
みたいなコマンドはPowerShellの方にも関数として機能が再現されている。
Ubuntuのシェルとか使ってて入力をミスると、「もしかしてこれのことか?」とか「それならこのパッケージに入ってる」とか自動で言ってくるけど、PowerShellにもそんな機能があったらいいよねってふと思った。