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 -コマンドを利用して直前のディレクトリに戻れる