Edited at

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


概要

OSによってオプションの変わるコマンドあります。(ls など)

.bashrc などの設定ファイルをOSごとに変えるのは面倒なので、共通して使えるalias の設定方法について記します。


例えば ls

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


Mac

% uname

Darwin
% ls -G
<色がついた結果が表示される>
% ls --color
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
<t-abe@mac-no-MacBook-Pro-2.local>


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 の設定ができました

他により良い方法がありましたら教えていただけるとうれしいです