ほりひログ

所属組織の製品 (Azure とか) に関連する内容が多めだけど、個人の見解であって、所属組織を代表する公式情報ではないです。

Azure Cloud Shellのシェルを決め打ちで起動するリンク

Azure Cloud Shellのシェル

Azure Cloud ShellではBashPowerShellがシェルとして使えて、シェルの切り替えはブラウザー内のUIからできる。

で、Xでこういうポストを見かけたので、どう切り替えているのか見てみた*1

BashPowerShell、どっちのシェルを起動するかはux.console.azure.comドメインのセッションストレージにあるconsoleShellTypeというものの値次第っぽい。
この値がpwshならPowerShellbashなら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 PortalJavascriptコードは難読化されてないので、こういうことがしやすい