🐟
OS情報を判定するfish functionを作った
全部対応していくとキリがないため、自分が使っているOSのみ対応することにした。
- Debian
- Ubuntu
- Arch Linux
- Endeavour OS
- macOS
- Fedora
- CentOS
OS情報を判定するには、uname
の実行結果や/etc/*release
を見るのが手っ取り早い。
各OSごとのファイル種類/実行結果
Endeavour OS, macOS 以外 にはDockerイメージがあるのでそれを用いるのが早い。
他は不明。
Ubuntu
uname -s
Linux
/etc/*release
/etc/lsb-release
/etc/os-release -> ../usr/lib/os-release
/etc/*version
/etc/debian_version
/etc/ec2_version
Endeavour OS
uname -s
Linux
/etc/*release
/etc/arch-release
/etc/lsb-release
/etc/os-release -> ../usr/lib/os-release
/etc/*version
Endeavour OSには存在せず。
Arch Linux
uname -s
Linux
/etc/*release
/etc/arch-release
/etc/os-release -> ../usr/lib/os-release
/etc/*version
Archには存在せず。
macOS
uname -s
Darwin
/etc/*release
macOSには存在せず。
/etc/*version
macOSには存在せず。
Debian
uname -s
Linux
/etc/*release
/etc/os-release -> ../usr/lib/os-release
/etc/*version
/etc/debian_version
Fedora
uname -s
Linux
/etc/*release
/etc/fedora-release -> ../usr/lib/fedora-release
/etc/os-release -> ../usr/lib/os-release
/etc/redhat-release -> fedora-release
/etc/system-release -> fedora-release
/etc/*version
Fedoraには存在せず。
CentOS
uname -s
Linux
/etc/*release
/etc/centos-release
/etc/os-release -> ../usr/lib/os-release
/etc/redhat-release -> centos-release
/etc/system-release -> centos-release
/etc/*version
CentOSには存在せず。
処理を考える
Linuxディストリには /etc/os-release
が含まれているので、まずこれでLinuxかmacOSか判別
if test -e /etc/os-release
echo "this is linux"
// 条件分岐...
else
echo "this is not linux"
end
macOSかそれ以外か判別
if test (uname -s) = "Darwin"
set dist_name "macOS"
else
# Other
echo "unkown distribution"
set dist_name "unknown"
end
最終的には以下のようになった。
Discussion