Skip to main content

codespace でのシェルの変更

使い慣れた設定を維持するために、codespace でシェルを変更できます。

codespace で作業している場合は、任意のシェルで新しいターミナル ウィンドウを開いたり、新しいターミナル ウィンドウの既定のシェルを変更したり、新しいシェルをインストールしたりできます。 ドットファイルを使用してシェルを構成することもできます。

既定の開発者コンテナー イメージを使用する codespace には、bashzsh、および fish のシェルがインストールされています。 VS Code Web クライアントで新しい codespace を開くか、SSH 経由で codespace に接続すると、ターミナルが開き、既定で bash セッションが実行されています。 VS Code デスクトップ アプリケーションでは、既定のシェルがローカル設定とオペレーティング システムによって異なります。 詳しい情報については、VS Code のドキュメントの「ターミナル プロファイル」を参照してください。

VS Code の既定のシェルからの変更

既定のシェルを使用しない場合は、別のシェルで新しいターミナル セッションを開くことができます。

  1. VS Code に統合ターミナルが表示されない場合は、Ctrl+` キーを押します。

  2. 新しいターミナル ウィンドウを開く アイコンの右側にあるドロップダウン アイコンを選びます。

    VS Code の統合ターミナルのスクリーンショット。 プラス アイコンの横に、下向きの矢印がオレンジ色の枠で囲まれています。

  3. ドロップダウン メニューで、使用するシェルの名前をクリックします。

新しいシェルのインストール

codespace の基本イメージまたは開発コンテナー構成にまだインストールされていないシェルを使用したい場合は、新しいシェルをインストールできます。

既定の開発者コンテナー イメージを使用している場合は、Ubuntu Linux のインストール手順をご確認ください。 1 つのセッションに対して別のシェルを使用するだけの場合は、コマンド ラインを使って、作業中の codespace にシェルをインストールできます。 ただし、codespace でコンテナーをリビルドすると、インストールしたプログラムが失われる可能性があります。 詳しくは、「GitHub Codespaces の詳細」を参照してください。

新しいシェルをインストールするためのより堅牢なオプションは、インストール コマンドをドットファイル リポジトリに含めるか、devcontainer.json ファイル内の postCreateCommand などのライフサイクル コマンドとして含める方法です。 ドットファイル リポジトリを使用して、すべての独自の codespace で使用するシェルと、特定のリポジトリの共同作成者がインストールする必要があるシェル用の devcontainer.json ファイルをインストールする必要があります。 詳細については、「アカウントの GitHub Codespaces をパーソナライズする」および「開発コンテナーの概要」を参照してください。

新しいシェルの VS Code ターミナル プロファイルの追加

VS Code では、ほとんどの標準シェルが自動的に検出され、ターミナル プロファイルとして追加されるため、インストールしたシェルを使用して新しいターミナル ウィンドウを簡単に開くことができます。

インストールしたシェルが自動的に検出されない場合は、新しいターミナル プロファイルをユーザー設定に追加できます。 この設定はオペレーティング システムによって異なるため、VS Code Web クライアントとデスクトップ アプリケーション用のローカル オペレーティング システムの linux を使用する必要があります。

  1. Visual Studio Code Command Palette を開くには、Command+Shift+P キー (Mac)、または Ctrl+Shift+P キー (Windows) を押します。

  2. 「ユーザー設定」と入力し、 [基本設定: ユーザー設定を開く (JSON)] をクリックします。

  3. settings.json ファイルの JSON オブジェクト内に、次のような新しいプロパティを追加します。 OPERATING-SYSTEM を関連するオペレーティング システム (linuxwindowsosx など) に置き換え、SHELL をインストールしたシェルに置き換えます。

    JSON
    "terminal.integrated.profiles.OPERATING-SYSTEM": {
      "SHELL": {
        "path": "SHELL"
      }
    }
    

    次に例を示します。

    "terminal.integrated.profiles.linux": {
     "csh": {
       "path": "csh"
     }
    }
    
  4. ファイルを保存します。

Settings Sync を使うと、VS Code Web クライアントとデスクトップ アプリケーションで開いたすべての codespace でこれらの設定を共有できます。 Web クライアントで作業している場合、Settings Sync は既定で無効になっているため、変更を設定にプッシュしたり別の場所で行った新しい変更をプルしたりするには、Settings Sync を有効にする必要があります。 詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」を参照してください。

VS Code の既定のシェルの設定

既定のターミナル プロファイルを設定して、VS Code で開くすべての新しいターミナル ウィンドウに使用される既定のシェルを選ぶことができます。 既定のターミナル プロファイルはオペレーティング システムによって異なるため、VS Code Web クライアントを使用している場合は Linux、デスクトップ アプリケーションを使用している場合はローカル オペレーティング システムの既定のプロファイルを設定できます。

注: 既定のプロファイルに関係なく、Web クライアントで開かれた codespace は常に bash セッションが最初に実行された状態で開きます。

  1. Visual Studio Code Command Palette を開くには、Command+Shift+P キー (Mac)、または Ctrl+Shift+P キー (Windows) を押します。

  2. 「ユーザー設定」と入力し、 [基本設定: ユーザー設定を開く (JSON)] をクリックします。

  3. JSON オブジェクト内で、関連するオペレーティング システムの既定のシェルを設定するには、行を追加するか、次のように既存の行を編集します。

    "terminal.integrated.defaultProfile.OPERATING-SYSTEM": "SHELL"
    

    次に例を示します。

    JSON
    {
       "terminal.integrated.defaultProfile.osx": "zsh",
       "terminal.integrated.defaultProfile.linux": "bash",
       "terminal.integrated.defaultProfile.windows": "PowerShell"
    }
    
  4. settings.json ファイルを保存します。

Settings Sync を使うと、VS Code Web クライアントとデスクトップ アプリケーションで開いたすべての codespace でこれらの設定を共有できます。 Web クライアントで作業している場合、Settings Sync は既定で無効になっているため、変更を設定にプッシュしたり別の場所で行った新しい変更をプルしたりするには、Settings Sync を有効にする必要があります。 詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」を参照してください。

SSH 経由での既定のシェルの設定

SSH 経由でコマンド ラインから codespace に接続する場合、既定では codespace 内のbash セッションに接続します。

GitHub Codespaces のドットファイル リポジトリを有効にしている場合は、ドットファイルの install.sh などのインストール スクリプトにコマンドを追加することで、接続する既定のシェルを変更できます。 詳細については、「GitHub CLI で GitHub Codespaces を使用する」および「アカウントの GitHub Codespaces をパーソナライズする」を参照してください。 たとえば、次のコマンドでは、既定のシェルが zsh に変更されます。

Shell
sudo chsh "$(id -un)" --shell "/usr/bin/zsh"

既定で codespace にインストールされていない既定のシェルを使用する場合、またはシェルの最新バージョンがあることを確認する場合は、最初にシェルをインストールできます。

Shell
sudo apt-get update -y
sudo apt-get install -y csh
sudo chsh "$(id -un)" --shell "/usr/bin/csh"

: (たとえば、gh codespace create を使用して) 新しい codespace を作成する場合は、SSH 経由で codespace に接続する前に、スクリプトの実行が完了するまで十分な時間を待つ必要があります。 スクリプトの実行が完了していない場合は、既定の bash セッションに接続します。

codespace に接続している場合、ほとんどのシェルでは、コマンド readlink /proc/$$/exe を使用して、正しいシェルが実行されていることを確認できます。

シェルの構成

ほとんどのシェルでは、.bashrc などの構成ファイルを使用して、任意の設定でシェルを構成できます。 これらの設定には、別名や環境変数などが含まれる場合があります。

既定では、codespace にはプレインストールされるシェルの定義済みの構成が含まれています。 たとえば、codespace のホーム ディレクトリには .bashrc.zshrc のファイルが含まれています。 これらのファイルの内容を変更してから、source ~/.bashrc のようなコマンドを使用してシェル構成を更新できます。 ただし、codespace でコンテナーをリビルドすると、これらのファイルに対する変更は失われます。 詳しくは、「GitHub Codespaces の詳細」を参照してください。

一般には、任意の設定でシェルを構成するには、ドットファイル リポジトリを使用する必要があります。 ドットファイルの設定は、作成したすべての codespace に適用され、コンテナーがリビルドされても保持されます。 詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」を参照してください。

fish シェルのトラブルシューティング

fish シェルには、Web ベースの構成インターフェイスが含まれています。 fish_config コマンドを使用してローカル Web サーバーを起動し、このインターフェイスを起動してから、ターミナル プロンプトの変更や環境変数の表示などを行うことができます。

codespace で fish の Web ベースのインターフェイスを使用することができます。 ただし、VS Code の統合ターミナルの色設定は、選んだ VS Code のテーマによって異なります。fish_config インターフェイスで新しいテーマを設定してこれらの設定をオーバーライドすることはできません。

fish でローカル サーバーが起動すると、GitHub Codespaces が転送されたポートに提供する既定のリンクは機能しません。 たとえば、ポップアップ メッセージで [ブラウザーで開く] をクリックすると、エラー ページが表示されます。

fish_config の Web ベースのインターフェイスにアクセスするには:

  1. fish セッションを実行しているターミナルで、「fish_config」と入力します。

  2. ターミナル出力で、Command キーを押しながらクリックするか、Ctrl キーを押しながらクリックして web_config HTML ファイルへのリンクを 開きます。

    $ fish_config
    Web config started at file:///tmp/web_config60rc9tr3.html
    Hit ENTER to stop.
    
  3. web_config ファイルで、Command キーを押しながらクリックするか、Ctrl キーを押しながらクリックして転送されたポートへのリンクを 開きます。

    <body>
      <p><a href="http://localhost:8000/1b9411c2469e392b96df5e5b28da485b/">Start the Fish Web config</a></p>
    </body>
    

参考資料