kdnakt blog

hello there.

PowerShellをアップデートして「cd -」コマンドで直前のディレクトリに戻れるようにした

Windowsマシンでコマンドを入力する際には基本的にGit BashかConsole 2を使っている。ただ、最近よく利用しているVS CodeのデフォルトはPowerShellなので、これも割とよく使うのだが、古いバージョンを使っていたため「cd -」コマンドが使えず困っていた。

 

gitforwindows.org

sourceforge.net

 

[元のディレクトリに戻りたい]

BashなどUnix系のシェルを利用していると、直前のディレクトリに戻る際にcd -というコマンドを利用することができる。

/ $ cd /opt
/opt akito$ cd /var
/var akito$ cd -
/opt
/opt akito$ 

 

コマンドプロンプト(CMD)では使えないlsなどのコマンドもPowerShellはいい感じに解釈して実行してくれるので、cd -も使えるかなと思ったらエラーが出てしまった。

f:id:kidani_a:20191118233216p:plain

PS C:\> cd -
cd : パス 'C:\-' が存在しないため検出できません。
発生場所 行:1 文字:1
+ cd -
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (C:\-:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

 

Google先生に聞くと、なんかStackoverflowっぽいサイトに案内された。

superuser.com

自分で頑張ってエイリアスを設定すればいいよ、ということらしい。めんどくさ……と思いつつ最後まで読むと素敵な情報が。

Just tried cd - on Powershell Core 6.2.2 and it works :)

PowerShell Core 6.2.2で試したら上手くいったらしい。

 

[環境情報]

という訳でPowerShellをアップデート……する前に現在の環境の確認。

VS Codeでターミナルを起動すると、pscore6という新しいバージョンを使えという表示が出ている。やはりバージョンアップが必要なようだ。

f:id:kidani_a:20191118233856p:plain

 

PowerShellのバージョンを正確に確認する方法をGoogle先生に問い合わせると、こちらのページがヒットした。

stackoverflow.com

 

get-hostというコマンドを入力すると、PowerShellのバージョンを確認できるらしい。実行してみると、以下のような表示が出た。PowerShellのバージョンとしては「5.1.18362.145」ということになる。 

f:id:kidani_a:20191118031636p:plain

 

しかし6.2.2で上手くいくと教えてくれたStackoverflowによれば、PowerShellではなくPowerShell Coreと書かれている。

blog.ipswitch.com

さらっと読んだだけだが、どうやらPowerShellが新しくなってPowerShell Coreができたらしい。MacLinuxなどのクロスプラットフォーム対応とDockerサポートがある、と。なるほど。

 

[PowerShell Coreのインストール]

インストール手順は公式サイトを参考にした。OSはWindows 10なので、前提条件は無視できる。

docs.microsoft.com

 

GitHubのリリースページからPowerShell Core 6の最新版(6.2.3)のインストーラ(.msiファイル)をダウンロードする。プレビュー版の7が公開されているが、こちらは一旦無視する。

github.com

 

ダウンロードしたインストーラを利用してインストールする。インストーラの表記がPowerShell Coreになってないのが気になるが、関係なさそうなのでとりあえず先に進む。

f:id:kidani_a:20191118033232p:plain

 

インストール先のフォルダはデフォルトのまま。

f:id:kidani_a:20191118032347p:plain

 

念のためエクスプローラ上で右クリックメニューからPowerShellを開けるようにしておく。

f:id:kidani_a:20191118032545p:plain

 

インストール作業を開始する。管理者権限を要求されるので承認して次へ。

f:id:kidani_a:20191118032554p:plain

 

色々とファイルがコピーされる。

f:id:kidani_a:20191118032623p:plain

 

インストールが完了した。

f:id:kidani_a:20191118032635p:plain

 

[VS Codeのデフォルトシェルを変更する]

さてこれで安心……と思ってVS Codeを開いてget-hostコマンドでバージョンを確認すると、何も変わっていなかった。調べてみると、こちらは別途設定が必要とのこと。

www.gigas-jp.com

 

VS Codeのターミナルの画面右上から、既定のシェルを変更することができる。

f:id:kidani_a:20191118233339p:plain

 

コマンドプロンプトや、これまで利用していたPowerShellに加えて、WSLやGit Bashも選択することができるようだ。じゃあGit Bashでいいかな……とも思ったが、せっかくPowerShell Coreをインストールしたのでそちらを選択した。

f:id:kidani_a:20191118233403p:plain

 

シェルの名前が「powershell」から「pwsh」に変更になっていることを確認。

f:id:kidani_a:20191118034337p:plain

 

起動時にバージョンが表示されるようになった。

f:id:kidani_a:20191118233623p:plain

 

念のためget-hostコマンドを実行してバージョンを再確認する。

f:id:kidani_a:20191118233652p:plain

 

試してみると、確かにcd -コマンドで直前のディレクトリに戻ることができた。

 

[まとめ]