.bashrcでOSを確認する
最近、.bashrc
や.vimrc
など、見直してました。
macOSで利用している.bashrc
を、Linuxでも利用したいと思ったからです。
ということで、自分用のメモ。
.bashrc
.bashrc
は、シンプルに外部ファイルを読み込むだけにしました。
gitリポジトリは、ghq
で管理しているので、こんな感じ。
1. $HOME/go/src/gitlab.com/teruhirokomaki/dotfiles/.bash_bashrc.bash
2. $HOME/go/src/gitlab.com/teruhirokomaki/dotfiles/.bash_alias.bash
3. $HOME/go/src/gitlab.com/teruhirokomaki/dotfiles/.bash_function.bash
.bash_bashrc.bash
ファイルの一部を切り取っています。
こんな感じで記述しました。
1#--------------------------------------------------
2# os
3#--------------------------------------------------
4if [ "`uname`" == "Darwin" ]; then
5 ISMAC=true
6elif [ "`uname`" == "Linux" ]; then
7 ISLINUX=true
8fi
9
10#--------------------------------------------------
11# fzf
12#--------------------------------------------------
13
14if [ $ISLINUX ]; then
15 [ -f ~/.fzf.bash ] && source ~/.fzf.bash
16fi
ファイル名についての模索
ファイル名の規則ってどんな感じなんでしょうかね?
gcpのsdkをインストールした際に.bash_profile
に追記されたのが、こちら
path.bash.inc
とcompletion.bash.inc
というファイル名なんですね。
先程の外部ファイルは.bash_bashrc.bash
としてますがbashrc.bash.inc
にしても良いかもしれない。
1# The next line updates PATH for the Google Cloud SDK.
2if [ -f '/Users/teruhirokomaki/google-cloud-sdk/path.bash.inc' ]; then source '/Users/teruhirokomaki/google-cloud-sdk/path.bash.inc'; fi
3
4# The next line enables shell command completion for gcloud.
5if [ -f '/Users/teruhirokomaki/google-cloud-sdk/completion.bash.inc' ]; then source '/Users/teruhirokomaki/google-cloud-sdk/completion.bash.inc'; fi
ググってみた
ググってみると…
How to detect the OS from a Bash script?
uname
と$OSTYPE
のパターンがありましたが、macOSの場合の記述がシンプルなので、uname
にしました。
uname
1platform='unknown'
2unamestr=`uname`
3if [[ "$unamestr" == 'Linux' ]]; then
4 platform='linux'
5elif [[ "$unamestr" == 'FreeBSD' ]]; then
6 platform='freebsd'
7fi
$OSTYPE
1if [[ "$OSTYPE" == "linux-gnu" ]]; then
2 # ...
3elif [[ "$OSTYPE" == "darwin"* ]]; then
4 # Mac OSX
5elif [[ "$OSTYPE" == "cygwin" ]]; then
6 # POSIX compatibility layer and Linux environment emulation for Windows
7elif [[ "$OSTYPE" == "msys" ]]; then
8 # Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
9elif [[ "$OSTYPE" == "win32" ]]; then
10 # I'm not sure this can happen.
11elif [[ "$OSTYPE" == "freebsd"* ]]; then
12 # ...
13else
14 # Unknown.
15fi
1case "$OSTYPE" in
2 solaris*) echo "SOLARIS" ;;
3 darwin*) echo "OSX" ;;
4 linux*) echo "LINUX" ;;
5 bsd*) echo "BSD" ;;
6 msys*) echo "WINDOWS" ;;
7 *) echo "unknown: $OSTYPE" ;;
8esac