OSごとにオプションの違うコマンドのaliasの設定


概要

OSによってオプションの変わるコマンドあります。(ls など)
.bashrc などの設定ファイルをOSごとに変えるのは面倒なので、共通して使えるalias の設定方法について記します。

例えば ls

MacとUbuntuで色をつけるオプションが違います。

Mac

% uname
Darwin
% ls -G
<色がついた結果が表示される>
% ls --color
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
 <[email protected]>

Ubuntu

% uname
Linux
% ls --color
<色がついた結果が表示される>
% ls -G
<エラーになならないが白黒の結果>

設定例

if / case で場合分けしただけですが、.bashrc などに以下のように書くとOSが違っても同じ設定ファイルを使いまわせます

uname コマンド

if [ $(uname) = 'Linux' ]; then
    alias ls='ls --color'
else
    alias ls='ls -G'
fi

環境変数 シェル変数 ${OSTYPE}

uname コマンドを実行する必要がない分、環境変数 シェル変数を使う方がようさそうな気がします。

case ${OSTYPE} in
    darwin*)
        alias ls='ls -G'
        ;;
    linux*)
        alias ls='ls --color'
        ;;
esac

まとめ

OSが違っても同じ設定ファイルを使いまわせる alias の設定ができました
他により良い方法がありましたら教えていただけるとうれしいです