「bash」スクリプトを実行する訳ではなく、
コンテナに入るだけであるのに何故「bash」を付ける必要があるのでしょうか...?
bash
は実行します
実験
たとえば、手元でターミナルを開いてみましょう
そこで bash
コマンドを実行すると、一見何も起きていないように見えます:
ところが、exit
コマンドを実行しても、2 回入力しないとターミナルは終了しません:
bash
コマンドを実行することで、シェル
を起動し、
起動したシェル
の入力
にターミナルを割り当てているために、
このようなふるまいになります
bash スクリプト実行時とのふるまいの違いについて
bash
コマンドでは、bash
スクリプトを実行するときは
例えば -c
オプションでスクリプトを入力したり、
console
1$ bash -c "echo aaaa"
2aaaa
または、実行したいスクリプトのファイルを指定します
bash:test.sh
1#!/usr/bin/env bash
2echo "test"
console
1$ bash test.sh
2test
この場合はシェル
で処理が即座に実行され、シェル
の入力
はターミナルに割り当てられません
docker-compose exec の詳細
ところで、
質問欄のドキュメントは Docker Compose
のドキュメントではなく
Docker
のドキュメントです
Docker Compose の exec コマンドのドキュメントは次のページです:
docker-compose exec | Docker Documentation
This is the equivalent of docker exec
.
With this subcommand you can run arbitrary commands in your services.
Commands are by default allocating a TTY,
so you can use a command such as docker-compose exec web sh
to get an interactive prompt.
これは大体次のような意味です:
これは docker exec
に相当します。
このサブコマンドを使用すると、サービスで任意のコマンドを実行できます。
コマンドはデフォルトでTTYを割り当てるため、
例えば docker-compose exec web sh
というように
コマンドを使用してインタラクティブなプロンプトを取得できます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/27 08:00