From 6a86c83f0c77deae3b9907b6f4e0e8718d2afd9f Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Wed, 3 Aug 2022 13:43:09 +0200 Subject: Add $BASHTARD_PLATFORM[init] --- lib/main.bash | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'lib/main.bash') diff --git a/lib/main.bash b/lib/main.bash index cf3e069..bbfd602 100644 --- a/lib/main.bash +++ b/lib/main.bash @@ -138,6 +138,7 @@ discover_system() { BASHTARD_PLATFORM["version"]="$(discover_system_version)" BASHTARD_PLATFORM["term"]="$TERM" BASHTARD_PLATFORM["fqdn"]="$(hostname -f)" + BASHTARD_PLATFORM["init"]="$(discover_system_init)" # When on a Linux-using OS, check for the specific distribution in use. if [[ ${BASHTARD_PLATFORM[os]} == *"linux"* ]] @@ -174,8 +175,36 @@ discover_system_distro() { fi } -discover_system_version() { - printf "%s" "$(uname -r | awk '{print tolower($0)}')" +discover_system_init() { + local sbin_init + + # Differing init systems seems to only be a thing on GNU+Linux + if [[ ${BASHTARD_PLATFORM["os"]} != "linux" ]] + then + return + fi + + sbin_init="$(readlink -f "/sbin/init" | awk -F/ '{ print $NF }')" + + # If /sbin/init is a symlink, it will point us towards the right thing + if [[ $sbin_init != "init" ]] + then + printf "%s" "$sbin_init" + return + fi + + # Otherwise we try out /etc/inittab + if [[ -f "/etc/inittab" ]] + then + awk -F: '/^rc:/ { print $4 }' /etc/inittab \ + | awk '{ print $1 }' \ + | awk -F/ '{ print $NF }' + + return + fi + + # If we can't figure it out, show a warning + warn "$BASHTARD_NAME/util" "Can't figure out system init" } discover_system_key() { @@ -199,4 +228,8 @@ discover_system_os() { fi } +discover_system_version() { + printf "%s" "$(uname -r | awk '{print tolower($0)}')" +} + main "$@" -- cgit v1.1