Azure Cloud Shellのシェル
Azure Cloud ShellではBashかPowerShellがシェルとして使えて、シェルの切り替えはブラウザー内のUIからできる。
で、Xでこういうポストを見かけたので、どう切り替えているのか見てみた*1。
Azure CloudShellは https://t.co/vIQB5Njwj5 で起動できるけど、bashかPowerShellを選んで起動できるようにならんかな…もうできる?
— kkamegawa (@kkamegawa) 2024年4月11日
BashとPowerShell、どっちのシェルを起動するかはux.console.azure.com
ドメインのセッションストレージにあるconsoleShellType
というものの値次第っぽい。
この値がpwsh
ならPowerShell、bash
ならBashが起動する。
リンクを開く時にセッションストレージの中を操作するのは無理だと思うので、他の方法としてクエリーパラメータからこいつをいじれないか調べてみた。
すると、feature.azureconsole.ostype
というクエリーパラメータを使って間接的にセッションストレージ内のconsoleShellType
がいじれることがわかった。
それぞれのシェルでCloud Shellを起動するリンクがこちら。
Bashで起動するリンク
https://portal.azure.com/?feature.azureconsole.ostype=linux#cloudshell
PowerShellで起動するリンク
https://portal.azure.com/?feature.azureconsole.ostype=windows#cloudshell
ちなみに、これらのリンクは https://portal.azure.com になっていて、きっかけのポストにあったリンク https://shell.azure.com とはドメインが違う。
Cloud Shellの実体は https://poral.azure.com/#cloudshell の方で、https://shell.azure.com にアクセスした時は https://portal.azure.com/#cloudshell/ にリダイレクトされてCloud Shellが開いている。
shell.azure.com
の方がURLがわずかに短いので、こっちでもクエリーパラメータが効かないか試してみた。
けど、ダメだった。
リダイレクトされるときのリクエスト/レスポンスを見てみると、レスポンスの Location
ヘッダーにクエリーパラメータが引き継がれていないことがわかる。
なので無理っぽい。残念。
*1:Azure PortalのJavascriptコードは難読化されてないので、こういうことがしやすい