docker-composeの後につくbash,ashの違い
仕事で利用している開発環境では、、、
docker-compose exec -it <container> bash
なんだけど、自分が個人開発で使っているものは、
docker-compose exec -it <contaienr> ash
でした。
bashで使っている環境のコマンドはashにするとエラーになるし、もう一方も同じ。
これってどんな違いがあるのかな?と思い調べてみました。
TL;DR
dockerコンテナ内部でシェルを使う時の参照元の違い
詳細
言わずもがなではありますが、シェルはOS(Linux)を操作するCUIのことです。
開発を行うにあたってはdockerコンテナに入ってから色々コマンドを打つわけですが、そのコマンドを打つためにbash
を参照しています。
bash
の中には「pwd
というコマンドが送られてきたら現在のパスを表示する」みたいなコマンドが登録されていて、シェルが実行できるワケですね。
ただ、同じLinuxでもディストリービューションによってシェルの置き場所がbash
ではない場合があります。
それを確認できるのが下記のコマンド。
echo $SHELL
// /bin/bash or /bin/ash
bash
でコンテナに入れるdockerコンテナ内で打った時は/bin/bash
、
ash
で入れる場合は/bin/ash
になります。
いわゆる「パスを通す」みたいなコトをdocker-compose
でもやっています。
LinuxやDockerのキホンを知らなかったコトをさらけ出しただけのような気もしますが、スッキリしました!
参考資料
下記記事が分かりやすく、とても助かりました!
Author And Source
この問題について(docker-composeの後につくbash,ashの違い), 我々は、より多くの情報をここで見つけました https://qiita.com/hiro5963/items/c2bed00761d50abb44ae著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .