最近VMで開発することが多くなっているのだが、その際のエイリアスなど毎回同じものを追加しているので自動化してみた。
以下のことをしたい
- gitコマンドのエイリアス追加
- ブランチ表示
そして上記のコマンドがすでにファイルに記載されていたら再度追加するのを防いでおきたい。
それは grep -qxF "${stmt}" filename
でできるらしい(以下参照)。
シェルスクリプトは以下
alias.sh
#! /bin/sh
# useful aliases when development in VM
HOMEDIR="/home/vagrant"
touch $HOMEDIR/.bash_aliases
stmt='alias gst="git status"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gp="git push"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gcmsg="git commit -S -m"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gup="git pull"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias ga="git add"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gco="git checkout"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gcb="git checkout -b"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gm="git merge"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt='alias gcm="git checkout main"'
grep -qxF "${stmt}" $HOMEDIR/.bash_aliases || echo "${stmt}" >> $HOMEDIR/.bash_aliases
stmt="
if [ -f $HOMEDIR/.bash_aliases ]; then
$HOMEDIR/.bash_aliases
fi"
grep -qxF "${stmt}" $HOMEDIR/.bashrc || echo "${stmt}" >> $HOMEDIR/.bashrc
stmt="
git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}"
grep -qxF "${stmt}" $HOMEDIR/.bashrc || echo "${stmt}" >> $HOMEDIR/.bashrc
stmt='export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$(git_branch)\$ "'
grep -qxF "${stmt}" $HOMEDIR/.bashrc || echo "${stmt}" >> $HOMEDIR/.bashrc
VagrantでVMを立ち上げているので、このシェルスクリプトを走らせるように追加しておく。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "vm-build" do |v|
end
config.vm.box = "bento/ubuntu-18.04"
config.vm.synced_folder "./", "/home/vagrant/myfolder"
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y nasm make xorriso binutils gcc automake g++
sudo ./alias.sh
SHELL
end
これでvagrant up
でgit周辺のコマンドも追加できる!
相対パスが使えなかったので/home/vagrant
を指定しないといけないのはめんどうだが
あとはssh, gpg鍵の自動化もできたらいいのだが、、、