コマンドエイリアスを管理するには

Incus コマンドラインクライアントincusでは良く使うコマンドのエイリアスを追加できます。 長いコマンドのショートカットとして、あるいは既存のコマンドに自動的にフラグを追加するために、エイリアスを使用できます。

エイリアスの管理にはincus aliasコマンドを使います。

incus aliasコマンドでは、以下のサブコマンドが使えます:

  • 新しいコマンドエイリアスの追加はincus alias add

  • コマンドエイリアスの一覧表示はincus alias list

  • コマンドエイリアスの削除はincus alias remove

  • コマンドエイリアスのリネームはincus alias rename

すべての利用可能なサブコマンドとパラメーターを見るにはincus alias --helpを実行してください。

注釈

コマンドエイリアス_イメージエイリアス_とは異なります。 イメージエイリアスはイメージの別名で、通常はそのイメージのより短い名前や別の覚えやすい名前です。

イメージエイリアスはサーバーサイドの概念でIncus APIの一部ですが、コマンドエイリアスは純粋にコマンドラインツールの設定の一部です。

コマンドエイリアスを追加するには

インスタンスを削除する際に必ず確認を求めるようにするには、incus deleteに常にincus delete --interactiveを実行するようにエイリアスを作成します。

以下のコマンドはdeleteという名前でコマンドエイリアスを_追加_し同じIncusのコマンドを--interactiveフラグつきで実行します。

incus alias add delete "delete --interactive"

myinstanceと呼ばれるインスタンスを削除するために、incus delete mycontainerを実行した際に、Incusのコマンドラインクライアントはincus deleteincus delete --interactiveに置き換えて、代わりにincus delete --interactive myinstanceを実行することに注意してください。

コマンドエイリアスをIncusコマンドと同じ名前で登録すると、コマンドエイリアスはIncusコマンドを隠します。

文字通りに同じ名前のIncusコマンドを実行したい場合は、まずコマンドエイリアスを削除する必要があります。 さらに、パラメータ(上の例ではコンテナの名前)つきのコマンドエイリアスを使う場合、@ARGSという文字列でパラメータを別の場所に手動で置かない限り、Incusのコマンドラインクライアントはパラメータをエイリアスされたコマンドの最後に置きます。

最後に、コマンドエイリアス内のコマンドはクォートで囲むべきです。

すべてのコマンドエイリアスを一覧表示するには

設定されたすべてのエイリアスを見るには、incus alias listを実行します。

コマンドエイリアスを削除するには

既存のコマンドエイリアスを削除するにはincus alias removeにコマンドエイリアスの名前を追加して入力します。

コマンドエイリアスをリネームするには

既存のコマンドエイリアスをリネームするには、incus alias renameに既存のコマンドエイリアスの名前と新しいコマンドエイリアスの名前を指定して入力します。

ビルトインのshellエイリアス

Incusはshellというビルトインのコマンドエイリアスがあります。このエイリアスはincus execコマンドをベースにしており、exec @ARGS@ -- su -lを実行します。

$ incus alias list
+-----------+----------------------+
|   ALIAS   |        TARGET        |
+-----------+----------------------+
| shell     | exec @ARGS@ -- su -l |
+-----------+----------------------+

incus shell myinstanceを実行すると、このコマンドはincus exec myinstance -- su -lに展開されます。

---lのようなパラメータを処理しないように指示するIncusのコマンドラインの約束事です。--がないと、展開されたincus exec mycontainer su -lというコマンドはIncusコマンドクライアントが-lをパースしようとするため失敗します。この特定のケースではincus shell-lというパラメータはないため失敗します。

su -lコマンドはsu -su --loginと同義です。 ログインシェルをrootユーザーでインスタンス内に起動します。 コマンドはrootユーザーでログインシェルを起動するために必要な設定ファイルを読みます。

shellエイリアスはIncusサーバーにビルトインされています。そのため、Incusクライアントでは削除できません。 削除しようとすると、エイリアスが存在しないというエラーになります。

$ incus alias remove shell
Error: Alias shell doesn't exist
$

shellという名前でエイリアスを登録すると、新しいコマンドはビルトインのコマンドエイリアスを隠すことになります。 つまり、Incusコマンドラインクライアントは新しく追加されたエイリアスを使い、代わりにビルトインのコマンドエイリアスは隠されます。追加したshellエイリアスを削除すると、ビルトインのエイリアスが再び現れます。

インスタンス内で非rootのシェルを起動するコマンドエイリアスを使うには

いくつかのIncusイメージは以下の表に示すように非rootのユーザー名を作成するように設定されています。

ディストリビューション

ユーザー

イメージ

Alpine

alpine

images:alpine/edge/cloud

Debian

debian

images:debian/12/cloud

Fedora

fedora

images:fedora/42/cloud

Ubuntu

ubuntu

images:ubuntu/24.04/cloud

以下のコマンドで非rootのユーザー名でインスタンス内のシェルを起動できます。

$ incus launch images:debian/12/cloud mycontainer
Launching mycontainer
$ incus exec mycontainer -- su -l debian
debian@mycontainer:~$

Incusコマンドエイリアスを使うことで、そのインスタンスへのシェルを起動するコマンドエイリアスも作れます。 次のコマンドエイリアスでは、debianというユーザー名にsu -lするように指定しています。

$ incus alias add debian 'exec @ARGS@ -- su -l debian'
$

これで、以下の便利なコマンドでインスタンス内にシェルを起動できます:

$ incus debian mycontainer
debian@mycontainer:~$

注釈

suの代わりとして、sudoを使いたいこともあるでしょう。その場合コマンドは以下のようになります。

 incus alias add debian `exec @ARGS@ -- sudo --login --user debian`

注釈

システムコンテナや仮想マシンを起動する際に、Incusでは環境変数を指定できます。

 incus launch -c environment.MYVARIABLE=myvalue images:debian/12 myinstance

そのようなインスタンスのログインシェルではこれらの環境変数へはアクセスできません。これはsu -lsudo --loginでのログインシェルのセマンティクスでは環境変数は一切維持しないからです。環境変数を維持したい場合は、代わりにsu --preserve-environmentsudo --preserve-envを使う必要があります。

インスタンスに環境変数を追加する別の方法はファイルシステムの/etc/environmentというファイルに書くことです。そうすうることでインスタンスへの新しいログインシェルはこのファイルをパースし環境変数を設定します。

その他

_コマンドエイリアス_は_イメージエイリアス_とは違うことに注意してください。 イメージエイリアスはイメージの別名で、通常はより短いな目やそのイメージの別の一般的なニーモニックです。

イメージエイリアスはIncus APIの一部でサーバーサイドの概念ですが、コマンドエイリアスは純粋にコマンドラインツールの設定です。