Windowsマシンでコマンドを入力する際には基本的にGit BashかConsole 2を使っている。ただ、最近よく利用しているVS CodeのデフォルトはPowerShellなので、これも割とよく使うのだが、古いバージョンを使っていたため「cd -」コマンドが使えず困っていた。
[元のディレクトリに戻りたい]
BashなどUnix系のシェルを利用していると、直前のディレクトリに戻る際にcd -
というコマンドを利用することができる。
/ $ cd /opt /opt akito$ cd /var /var akito$ cd - /opt /opt akito$
コマンドプロンプト(CMD)では使えないls
などのコマンドもPowerShellはいい感じに解釈して実行してくれるので、cd -
も使えるかなと思ったらエラーが出てしまった。
PS C:\> cd - cd : パス 'C:\-' が存在しないため検出できません。 発生場所 行:1 文字:1 + cd - + ~~~~ + CategoryInfo : ObjectNotFound: (C:\-:String) [Set-Location], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
Google先生に聞くと、なんかStackoverflowっぽいサイトに案内された。
自分で頑張ってエイリアスを設定すればいいよ、ということらしい。めんどくさ……と思いつつ最後まで読むと素敵な情報が。
Just tried cd - on Powershell Core 6.2.2 and it works :)
PowerShell Core 6.2.2で試したら上手くいったらしい。
[環境情報]
という訳でPowerShellをアップデート……する前に現在の環境の確認。
VS Codeでターミナルを起動すると、pscore6という新しいバージョンを使えという表示が出ている。やはりバージョンアップが必要なようだ。
PowerShellのバージョンを正確に確認する方法をGoogle先生に問い合わせると、こちらのページがヒットした。
get-hostというコマンドを入力すると、PowerShellのバージョンを確認できるらしい。実行してみると、以下のような表示が出た。PowerShellのバージョンとしては「5.1.18362.145」ということになる。
しかし6.2.2で上手くいくと教えてくれたStackoverflowによれば、PowerShellではなくPowerShell Coreと書かれている。
さらっと読んだだけだが、どうやらPowerShellが新しくなってPowerShell Coreができたらしい。MacやLinuxなどのクロスプラットフォーム対応とDockerサポートがある、と。なるほど。
[PowerShell Coreのインストール]
インストール手順は公式サイトを参考にした。OSはWindows 10なので、前提条件は無視できる。
GitHubのリリースページからPowerShell Core 6の最新版(6.2.3)のインストーラ(.msiファイル)をダウンロードする。プレビュー版の7が公開されているが、こちらは一旦無視する。
ダウンロードしたインストーラを利用してインストールする。インストーラの表記がPowerShell Coreになってないのが気になるが、関係なさそうなのでとりあえず先に進む。
インストール先のフォルダはデフォルトのまま。
念のためエクスプローラ上で右クリックメニューからPowerShellを開けるようにしておく。
インストール作業を開始する。管理者権限を要求されるので承認して次へ。
色々とファイルがコピーされる。
インストールが完了した。
[VS Codeのデフォルトシェルを変更する]
さてこれで安心……と思ってVS Codeを開いてget-hostコマンドでバージョンを確認すると、何も変わっていなかった。調べてみると、こちらは別途設定が必要とのこと。
VS Codeのターミナルの画面右上から、既定のシェルを変更することができる。
コマンドプロンプトや、これまで利用していたPowerShellに加えて、WSLやGit Bashも選択することができるようだ。じゃあGit Bashでいいかな……とも思ったが、せっかくPowerShell Coreをインストールしたのでそちらを選択した。
シェルの名前が「powershell」から「pwsh」に変更になっていることを確認。
起動時にバージョンが表示されるようになった。
念のためget-hostコマンドを実行してバージョンを再確認する。
試してみると、確かにcd -
コマンドで直前のディレクトリに戻ることができた。
[まとめ]
- PowerShell Core 6はGitHubのリリースページからインストーラをダウンロードできる
- PowerShell CoreをVS Codeで利用する場合は、別途デフォルトシェルの設定変更が必要
- PowerShell Core 6ではcd -コマンドを利用して直前のディレクトリに戻れる