Skip to content

Latest commit

 

History

History
85 lines (70 loc) · 4.34 KB

05cc509d1a106d16fe17.md

File metadata and controls

85 lines (70 loc) · 4.34 KB
title emoji type topics published
VS Codeの設定をいじってDockerコンテナ内のbashでgitコマンドを良い感じに補完できるようにしたった
💲
tech
bash
git
Docker
vscode
true

はじめに

開発環境のDockerコンテナ内で、git checkoutのあとのブランチ名を補完してくれなくて辛かったので、真面目に設定した。 チームで共有してる開発用コンテナの設定なので、みんなの環境には手を触れずに、自分の環境だけ対応する感じにした。なんとなく。

環境

UbuntuのDockerイメージ使ってる

golang:1.16-buster

コンテナ内で作業するときは、VS CodeのRemote - Containersってのを使って接続してる。コマンド打つときも、それでアクセスしてVS Code内でbash立ち上げてる。

調査

zshとかじゃなくて、デフォルトのbash使いたいので、bashの補完を検索した。 どうもbash_completion使ったら良さそう。 apt install bash-competionして. /etc/bash_completionしたらいい感じに補完してくれた。

ここらを参考にした。 Debian - apt (not apt-get) autocompletion not working - Unix & Linux Stack Exchange

設定を永続化するための方法は、色々ありそうな気がするけど、最終的に、VSCode Remote Containersの設定で、自分用の.bashrcを入れるようにした。 Dockerfileとかdocker-compose.ymlに書く方法もためしてみたけど、bashひらくたびにbash_completionを読み込む方法がよくわからんかった。 うまいこと.bashrcに永続化できたらいいんやと思うけど、やり方がいまいちわからんのと、人の.bashrcをいじるのも微妙な気がした。 ということで、個人設定で.bashrcを書き換える方針で探して試した。 また、.profile.bashrcを呼んでるみたいだったので、今回の設定文は.bashrcに書くことにした。

いろいろ調べた結果、自分用の.bashrcとかドットファイルをいい感じに設定できる、vscodeのRemote - Containersdotfiles.repositoryを使うことにした。

ここらを参考にした。 Developing inside a Container using Visual Studio Code Remote Development VSCode Remote Containers を使うなら dotfiles repository で幸せになろう - Qiita

設定

こんな感じで設定した。 dotfilesにトークンとかも書くかもしれないから、privateリポジトリにしておいた。

{
  "dotfiles.repository": "https://github.com/optimisuke/dotfiles.git",
  "dotfiles.targetPath": "~/dotfiles",
  "dotfiles.installCommand": "~/dotfiles/install.sh"
}

最初から入れたほうがいい気はするけど、Dockerfileとかdocker-compose.ymlの使い方のよくわからんかったので、VS Codeの設定でインストールさせることにした。 そのうち、チームのレビュー通ったら、apt install部分は然るべき場所に書きたい。 毎回、チェックするのも微妙やけど、そんなに時間かからんしよしとした。

bashcomp='/etc/bash_completion'
if [ ! -f $bashcomp ]; then
    apt update
    apt install -y bash-completion
fi
. $bashcomp

権限、こんな感じでいじれるらしい。windowsやとどうなるんやろ?

$ git update-index --add --chmod=+x install.sh

installはもとからある.bashrcに追加する感じにした。相対パスにしてるところが自信なかったけど、動いた。

#!/bin/bash
cat ./.bashrc >> ~/.bashrc

動作

vscodeからコンテナを起動してアタッチすると、bashが起動して、install.shが走った。コンソールには出てきてないけど、git cloneもいい感じにできてる。

# git checkout [TAB]
HEAD                   master                 origin/HEAD            origin/master 

おわりに

期待通りに動いて満足。 これで、たのしい補完ライフを送れる。