From 5babc8a98be786a3b9969886fdc98ef877868431 Mon Sep 17 00:00:00 2001 From: wojsmol Date: Fri, 5 Jul 2024 16:38:09 +0200 Subject: [PATCH 1/7] Add dependabot configuration - documentation https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file renated https://github.com/ChrisTitusTech/mybash/pull/62#issuecomment-2198382383 --- .github/dependabot.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..6e3712a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + reviewers: + - "ChrisTitusTech" From fc4e213e08d4e52497493ea752c8129f62d615b8 Mon Sep 17 00:00:00 2001 From: Angelos Giannourakos Date: Sat, 6 Jul 2024 10:24:36 +0300 Subject: [PATCH 2/7] Update setup.sh --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 0b93242..5a9f33f 100755 --- a/setup.sh +++ b/setup.sh @@ -172,7 +172,7 @@ install_additional_dependencies() { ;; *zypper) ${SUDO_CMD} zypper refresh - ${SUDO_CMD} zypper install -y neovim + ${SUDO_CMD} zypper -n install neovim # -y doesn't work on opensuse -n is short for -non-interactive which is equivalent to -y ;; *dnf) ${SUDO_CMD} dnf check-update From 6ced4625ad413d23b34af6ba32a37c39eedfb0fa Mon Sep 17 00:00:00 2001 From: anthonyp-cns <75483753+anthonyp-cns@users.noreply.github.com> Date: Sun, 7 Jul 2024 17:10:52 -0600 Subject: [PATCH 3/7] Added font in dependency function --- setup.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/setup.sh b/setup.sh index 0b93242..4cd06e1 100755 --- a/setup.sh +++ b/setup.sh @@ -98,6 +98,25 @@ installDepend() { if ! command_exists nvim; then DEPENDENCIES="${DEPENDENCIES} neovim" fi + # Check to see if a the FiraCode Nerd Font is installed (Change this to whatever font you would like) + FONT_NAME="FiraCode Nerd Font" + if fc-list :family | grep -iq "$FONT_NAME"; then + echo "Font '$FONT_NAME' is installed." + else + echo "Installing font '$FONT_NAME'" + # Change this URL to correspond with the correct font + FONT_URL="https://github.com/ryanoasis/nerd-fonts/releases/download/v2.3.3/FiraCode.zip" + FONT_DIR="$HOME/.local/share/fonts" + wget $FONT_URL -O ${FONT_NAME}.zip + unzip ${FONT_NAME}.zip -d $FONT_NAME + mkdir -p $FONT_DIR + mv ${FONT_NAME}/*.ttf $FONT_DIR/ + # Update the font cache + fc-cache -fv + # delete the files created from this + rm -rf ${FONT_NAME} ${FONT_NAME}.zip + echo "'$FONT_NAME' installed successfully." + fi echo -e "${YELLOW}Installing dependencies...${RC}" if [[ $PACKAGER == "pacman" ]]; then From e0aed31746762d35bd47b5e380da56fa83eab3f7 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Sat, 13 Jul 2024 21:45:06 -0500 Subject: [PATCH 4/7] convert to sh and add fastfetch config --- config.jsonc | 86 +++++++++++++++++++++++++++++++++++++ setup.sh | 119 +++++++++++++++++++++++++++------------------------ 2 files changed, 149 insertions(+), 56 deletions(-) create mode 100644 config.jsonc diff --git a/config.jsonc b/config.jsonc new file mode 100644 index 0000000..3a85404 --- /dev/null +++ b/config.jsonc @@ -0,0 +1,86 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "builtin", + "color": { + "1": "white", + "2": "cyan" + } + }, + "display": { + "separator": "  ", + "color": "cyan" + }, + "modules": [ + { + "type": "custom", // HardwareStart + "format": "┌─────────── \u001b[1mHardware Information\u001b[0m ───────────┐" // `\u001b` is `\033`, or `\e` + }, + { + "type": "host", + "key": " 󰌢" + }, + { + "type": "cpu", + "key": " " + }, + { + "type": "gpu", + "detectionMethod": "pci", + "key": " " + }, + { + "type": "display", + "key": " 󱄄" + }, + { + "type": "memory", + "key": " " + }, + { + "type": "custom", // SoftwareStart + "format": "├─────────── \u001b[1mSoftware Information\u001b[0m ───────────┤" + }, + { + "type": "os", + "key": " " // Just get your distro's logo off nerdfonts.com, + }, + { + "type": "kernel", + "key": " ", + "format": "{1} {2}" + }, + { + "type": "wm", + "key": " " + }, + { + "type": "shell", + "key": " " + }, + { + "type": "custom", + "format": "|──────────────\u001b[1mUptime / Age\u001b[0m──────────────────|" + }, + { + "type": "command", + "key": " OS Age ", + "keyColor": "magenta", + "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" + }, + { + "type": "uptime", + "key": " Uptime ", + "keyColor": "magenta" + }, + { + "type": "custom", // InformationEnd + "format": "└────────────────────────────────────────────┘" + }, + { + "type": "colors", + "paddingLeft": 2, + "symbol": "circle" + } + ] +} diff --git a/setup.sh b/setup.sh index 36a742e..b7d3e3a 100755 --- a/setup.sh +++ b/setup.sh @@ -1,26 +1,26 @@ -#!/bin/bash +#!/bin/sh -RC='\e[0m' -RED='\e[31m' -YELLOW='\e[33m' -GREEN='\e[32m' +RC='\033[0m' +RED='\033[31m' +YELLOW='\033[33m' +GREEN='\033[32m' # Check if the home directory and linuxtoolbox folder exist, create them if they don't LINUXTOOLBOXDIR="$HOME/linuxtoolbox" -if [[ ! -d "$LINUXTOOLBOXDIR" ]]; then - echo -e "${YELLOW}Creating linuxtoolbox directory: $LINUXTOOLBOXDIR${RC}" +if [ ! -d "$LINUXTOOLBOXDIR" ]; then + echo "${YELLOW}Creating linuxtoolbox directory: $LINUXTOOLBOXDIR${RC}" mkdir -p "$LINUXTOOLBOXDIR" - echo -e "${GREEN}linuxtoolbox directory created: $LINUXTOOLBOXDIR${RC}" + echo "${GREEN}linuxtoolbox directory created: $LINUXTOOLBOXDIR${RC}" fi -if [[ ! -d "$LINUXTOOLBOXDIR/mybash" ]]; then - echo -e "${YELLOW}Cloning mybash repository into: $LINUXTOOLBOXDIR/mybash${RC}" +if [ ! -d "$LINUXTOOLBOXDIR/mybash" ]; then + echo "${YELLOW}Cloning mybash repository into: $LINUXTOOLBOXDIR/mybash${RC}" git clone https://github.com/ChrisTitusTech/mybash "$LINUXTOOLBOXDIR/mybash" - if [[ $? -eq 0 ]]; then - echo -e "${GREEN}Successfully cloned mybash repository${RC}" + if [ $? -eq 0 ]; then + echo "${GREEN}Successfully cloned mybash repository${RC}" else - echo -e "${RED}Failed to clone mybash repository${RC}" + echo "${RED}Failed to clone mybash repository${RC}" exit 1 fi fi @@ -34,58 +34,61 @@ command_exists() { checkEnv() { ## Check for requirements. REQUIREMENTS='curl groups sudo' - if ! command_exists ${REQUIREMENTS}; then - echo -e "${RED}To run me, you need: ${REQUIREMENTS}${RC}" - exit 1 - fi - - ## Check Package Handeler - PACKAGEMANAGER='apt yum dnf pacman zypper' - for pgm in ${PACKAGEMANAGER}; do - if command_exists ${pgm}; then - PACKAGER=${pgm} - echo -e "Using ${pgm}" + for req in $REQUIREMENTS; do + if ! command_exists $req; then + echo "${RED}To run me, you need: $REQUIREMENTS${RC}" + exit 1 fi done - if [ -z "${PACKAGER}" ]; then - echo -e "${RED}Can't find a supported package manager" + ## Check Package Handler + PACKAGEMANAGER='apt yum dnf pacman zypper' + for pgm in $PACKAGEMANAGER; do + if command_exists $pgm; then + PACKAGER=$pgm + echo "Using $pgm" + break + fi + done + + if [ -z "$PACKAGER" ]; then + echo "${RED}Can't find a supported package manager${RC}" exit 1 fi ## Check if the current directory is writable. - GITPATH="$(dirname "$(realpath "$0")")" - if [[ ! -w ${GITPATH} ]]; then - echo -e "${RED}Can't write to ${GITPATH}${RC}" + GITPATH=`dirname \`realpath $0\`` + if [ ! -w $GITPATH ]; then + echo "${RED}Can't write to $GITPATH${RC}" exit 1 fi ## Check SuperUser Group SUPERUSERGROUP='wheel sudo root' - for sug in ${SUPERUSERGROUP}; do - if groups | grep ${sug}; then - SUGROUP=${sug} - echo -e "Super user group ${SUGROUP}" + for sug in $SUPERUSERGROUP; do + if groups | grep $sug >/dev/null; then + SUGROUP=$sug + echo "Super user group $SUGROUP" + break fi done ## Check if member of the sudo group. - if ! groups | grep ${SUGROUP} >/dev/null; then - echo -e "${RED}You need to be a member of the sudo group to run me!" + if ! groups | grep $SUGROUP >/dev/null; then + echo "${RED}You need to be a member of the sudo group to run me!${RC}" exit 1 fi - } installDepend() { ## Check for dependencies. DEPENDENCIES='bash bash-completion tar tree multitail fastfetch tldr trash-cli' - echo -e "${YELLOW}Installing dependencies...${RC}" - if [[ $PACKAGER == "pacman" ]]; then + echo "${YELLOW}Installing dependencies...${RC}" + if [ "$PACKAGER" = "pacman" ]; then if ! command_exists yay && ! command_exists paru; then echo "Installing yay as AUR helper..." - sudo ${PACKAGER} --noconfirm -S base-devel - cd /opt && sudo git clone https://aur.archlinux.org/yay-git.git && sudo chown -R ${USER}:${USER} ./yay-git + sudo $PACKAGER --noconfirm -S base-devel + cd /opt && sudo git clone https://aur.archlinux.org/yay-git.git && sudo chown -R $USER:$USER ./yay-git cd yay-git && makepkg --noconfirm -si else echo "Aur helper already installed" @@ -98,9 +101,9 @@ installDepend() { echo "No AUR helper found. Please install yay or paru." exit 1 fi - ${AUR_HELPER} --noconfirm -S ${DEPENDENCIES} + $AUR_HELPER --noconfirm -S $DEPENDENCIES else - sudo ${PACKAGER} install -yq ${DEPENDENCIES} + sudo $PACKAGER install -yq $DEPENDENCIES fi } @@ -111,7 +114,7 @@ installStarship() { fi if ! curl -sS https://starship.rs/install.sh | sh; then - echo -e "${RED}Something went wrong during starship install!${RC}" + echo "${RED}Something went wrong during starship install!${RC}" exit 1 fi if command_exists fzf; then @@ -129,13 +132,13 @@ installZoxide() { fi if ! curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh; then - echo -e "${RED}Something went wrong during zoxide install!${RC}" + echo "${RED}Something went wrong during zoxide install!${RC}" exit 1 fi } install_additional_dependencies() { - case $(command -v apt || command -v zypper || command -v dnf || command -v pacman) in + case `command -v apt || command -v zypper || command -v dnf || command -v pacman` in *apt) curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage chmod u+x nvim.appimage @@ -164,21 +167,25 @@ install_additional_dependencies() { linkConfig() { ## Get the correct user home directory. - USER_HOME=$(getent passwd ${SUDO_USER:-$USER} | cut -d: -f6) + USER_HOME=`getent passwd ${SUDO_USER:-$USER} | cut -d: -f6` ## Check if a bashrc file is already there. - OLD_BASHRC="${USER_HOME}/.bashrc" - if [[ -e ${OLD_BASHRC} ]]; then - echo -e "${YELLOW}Moving old bash config file to ${USER_HOME}/.bashrc.bak${RC}" - if ! mv ${OLD_BASHRC} ${USER_HOME}/.bashrc.bak; then - echo -e "${RED}Can't move the old bash config file!${RC}" + OLD_BASHRC="$USER_HOME/.bashrc" + if [ -e $OLD_BASHRC ]; then + echo "${YELLOW}Moving old bash config file to $USER_HOME/.bashrc.bak${RC}" + if ! mv $OLD_BASHRC $USER_HOME/.bashrc.bak; then + echo "${RED}Can't move the old bash config file!${RC}" exit 1 fi fi - echo -e "${YELLOW}Linking new bash config file...${RC}" + if [ ! -d $USER_HOME/.config/fastfetch ]; then + mkdir -p $USER_HOME/.config/fastfetch + fi + echo "${YELLOW}Linking new bash config file...${RC}" ## Make symbolic link. - ln -svf ${GITPATH}/.bashrc ${USER_HOME}/.bashrc - ln -svf ${GITPATH}/starship.toml ${USER_HOME}/.config/starship.toml + ln -svf $GITPATH/config.jsonc $USER_HOME/.config/fastfetch/config.jsonc + ln -svf $GITPATH/.bashrc $USER_HOME/.bashrc + ln -svf $GITPATH/starship.toml $USER_HOME/.config/starship.toml } checkEnv @@ -188,7 +195,7 @@ installZoxide install_additional_dependencies if linkConfig; then - echo -e "${GREEN}Done!\nrestart your shell to see the changes.${RC}" + echo "${GREEN}Done!\nrestart your shell to see the changes.${RC}" else - echo -e "${RED}Something went wrong!${RC}" + echo "${RED}Something went wrong!${RC}" fi \ No newline at end of file From 1bf9f124d34802b46fab1d77e93b2cd82375cb29 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Sat, 13 Jul 2024 21:54:13 -0500 Subject: [PATCH 5/7] finish conversion --- setup.sh | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/setup.sh b/setup.sh index de03c46..124d92a 100755 --- a/setup.sh +++ b/setup.sh @@ -25,7 +25,6 @@ if [ ! -d "$LINUXTOOLBOXDIR/mybash" ]; then fi fi - cd "$LINUXTOOLBOXDIR/mybash" || exit command_exists() { @@ -117,13 +116,13 @@ installDepend() { exit 1 fi ${AUR_HELPER} --noconfirm -S ${DEPENDENCIES} - elif [[ $PACKAGER == "nala" ]]; then + elif [ "$PACKAGER" = "nala" ]; then ${SUDO_CMD} ${PACKAGER} install -y ${DEPENDENCIES} - elif [[ $PACKAGER == "emerge" ]]; then + elif [ "$PACKAGER" = "emerge" ]; then ${SUDO_CMD} ${PACKAGER} -v app-shells/bash app-shells/bash-completion app-arch/tar app-editors/neovim sys-apps/bat app-text/tree app-text/multitail app-misc/fastfetch - elif [[ $PACKAGER == "xbps-install" ]]; then + elif [ "$PACKAGER" = "xbps-install" ]; then ${SUDO_CMD} ${PACKAGER} -v ${DEPENDENCIES} - elif [[ $PACKAGER == "nix-env" ]]; then + elif [ "$PACKAGER" = "nix-env" ]; then ${SUDO_CMD} ${PACKAGER} -iA nixos.bash nixos.bash-completion nixos.gnutar nixos.neovim nixos.bat nixos.tree nixos.multitail nixos.fastfetch else ${SUDO_CMD} ${PACKAGER} install -yq ${DEPENDENCIES} @@ -226,5 +225,4 @@ if linkConfig; then echo "${GREEN}Done!\nrestart your shell to see the changes.${RC}" else echo "${RED}Something went wrong!${RC}" -fi - +fi \ No newline at end of file From b5aa8ce422c11c656398f03001b22c1ee19db197 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Sat, 13 Jul 2024 22:19:28 -0500 Subject: [PATCH 6/7] fix user home --- setup.sh | 62 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/setup.sh b/setup.sh index 124d92a..be88379 100755 --- a/setup.sh +++ b/setup.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/sh -e RC='\033[0m' RED='\033[31m' @@ -35,7 +35,7 @@ checkEnv() { ## Check for requirements. REQUIREMENTS='curl groups sudo' for req in $REQUIREMENTS; do - if ! command_exists $req; then + if ! command_exists "$req"; then echo "${RED}To run me, you need: $REQUIREMENTS${RC}" exit 1 fi @@ -44,8 +44,8 @@ checkEnv() { ## Check Package Handler PACKAGEMANAGER='apt yum dnf pacman zypper' for pgm in $PACKAGEMANAGER; do - if command_exists $pgm; then - PACKAGER=$pgm + if command_exists "$pgm"; then + PACKAGER="$pgm" echo "Using $pgm" break fi @@ -67,8 +67,8 @@ checkEnv() { echo "Using ${SUDO_CMD} as privilege escalation software" ## Check if the current directory is writable. - GITPATH=`dirname \`realpath $0\`` - if [ ! -w $GITPATH ]; then + GITPATH=$(dirname "$(realpath "$0")") + if [ ! -w "$GITPATH" ]; then echo "${RED}Can't write to $GITPATH${RC}" exit 1 fi @@ -76,15 +76,15 @@ checkEnv() { ## Check SuperUser Group SUPERUSERGROUP='wheel sudo root' for sug in $SUPERUSERGROUP; do - if groups | grep $sug >/dev/null; then - SUGROUP=$sug + if groups | grep -q "$sug"; then + SUGROUP="$sug" echo "Super user group $SUGROUP" break fi done ## Check if member of the sudo group. - if ! groups | grep $SUGROUP >/dev/null; then + if ! groups | grep -q "$SUGROUP"; then echo "${RED}You need to be a member of the sudo group to run me!${RC}" exit 1 fi @@ -102,7 +102,7 @@ installDepend() { if ! command_exists yay && ! command_exists paru; then echo "Installing yay as AUR helper..." ${SUDO_CMD} ${PACKAGER} --noconfirm -S base-devel - cd /opt && ${SUDO_CMD} git clone https://aur.archlinux.org/yay-git.git && ${SUDO_CMD} chown -R ${USER}:${USER} ./yay-git + cd /opt && ${SUDO_CMD} git clone https://aur.archlinux.org/yay-git.git && ${SUDO_CMD} chown -R "${USER}:${USER}" ./yay-git cd yay-git && makepkg --noconfirm -si else echo "AUR helper already installed" @@ -160,13 +160,15 @@ installZoxide() { } install_additional_dependencies() { - case `command -v apt || command -v zypper || command -v dnf || command -v pacman` in + case $(command -v apt || command -v zypper || command -v dnf || command -v pacman) in *apt) - curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage - chmod u+x nvim.appimage - ./nvim.appimage --appimage-extract - ${SUDO_CMD} mv squashfs-root /opt/neovim - ${SUDO_CMD} ln -s /opt/neovim/AppRun /usr/bin/nvim + if [ ! -d "/opt/neovim" ]; then + curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage + chmod u+x nvim.appimage + ./nvim.appimage --appimage-extract + ${SUDO_CMD} mv squashfs-root /opt/neovim + ${SUDO_CMD} ln -s /opt/neovim/AppRun /usr/bin/nvim + fi ;; *zypper) ${SUDO_CMD} zypper refresh @@ -188,30 +190,36 @@ install_additional_dependencies() { } create_fastfetch_config() { - fastfetch --gen-config + ## Get the correct user home directory. + USER_HOME=$(getent passwd "${SUDO_USER:-$USER}" | cut -d: -f6) + + if [ ! -d "$USER_HOME/.config/fastfetch" ]; then + mkdir -p "$USER_HOME/.config/fastfetch" + fi + # Check if the fastfetch config file exists + if [ -e "$USER_HOME/.config/fastfetch/config.jsonc" ]; then + rm -f "$USER_HOME/.config/fastfetch/config.jsonc" + fi + ln -svf "$GITPATH/config.jsonc" "$USER_HOME/.config/fastfetch/config.jsonc" } linkConfig() { ## Get the correct user home directory. - USER_HOME=`getent passwd ${SUDO_USER:-$USER} | cut -d: -f6` + USER_HOME=$(getent passwd "${SUDO_USER:-$USER}" | cut -d: -f6) ## Check if a bashrc file is already there. OLD_BASHRC="$USER_HOME/.bashrc" - if [ -e $OLD_BASHRC ]; then + if [ -e "$OLD_BASHRC" ]; then echo "${YELLOW}Moving old bash config file to $USER_HOME/.bashrc.bak${RC}" - if ! mv $OLD_BASHRC $USER_HOME/.bashrc.bak; then + if ! mv "$OLD_BASHRC" "$USER_HOME/.bashrc.bak"; then echo "${RED}Can't move the old bash config file!${RC}" exit 1 fi fi - if [ ! -d $USER_HOME/.config/fastfetch ]; then - mkdir -p $USER_HOME/.config/fastfetch - fi + echo "${YELLOW}Linking new bash config file...${RC}" - ## Make symbolic link. - ln -svf $GITPATH/config.jsonc $USER_HOME/.config/fastfetch/config.jsonc - ln -svf $GITPATH/.bashrc $USER_HOME/.bashrc - ln -svf $GITPATH/starship.toml $USER_HOME/.config/starship.toml + ln -svf "$GITPATH/.bashrc" "$USER_HOME/.bashrc" + ln -svf "$GITPATH/starship.toml" "$USER_HOME/.config/starship.toml" } checkEnv From ec4b9355e32589ae70654d06a4d76b406a0f46c8 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Sat, 13 Jul 2024 22:36:24 -0500 Subject: [PATCH 7/7] fix multiple runs --- setup.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/setup.sh b/setup.sh index be88379..10166c5 100755 --- a/setup.sh +++ b/setup.sh @@ -14,17 +14,18 @@ if [ ! -d "$LINUXTOOLBOXDIR" ]; then echo "${GREEN}linuxtoolbox directory created: $LINUXTOOLBOXDIR${RC}" fi -if [ ! -d "$LINUXTOOLBOXDIR/mybash" ]; then - echo "${YELLOW}Cloning mybash repository into: $LINUXTOOLBOXDIR/mybash${RC}" - git clone https://github.com/ChrisTitusTech/mybash "$LINUXTOOLBOXDIR/mybash" - if [ $? -eq 0 ]; then - echo "${GREEN}Successfully cloned mybash repository${RC}" - else - echo "${RED}Failed to clone mybash repository${RC}" - exit 1 - fi +if [ -d "$LINUXTOOLBOXDIR/mybash" ]; then rm -rf "$LINUXTOOLBOXDIR/mybash"; fi + +echo "${YELLOW}Cloning mybash repository into: $LINUXTOOLBOXDIR/mybash${RC}" +git clone https://github.com/ChrisTitusTech/mybash "$LINUXTOOLBOXDIR/mybash" +if [ $? -eq 0 ]; then + echo "${GREEN}Successfully cloned mybash repository${RC}" +else + echo "${RED}Failed to clone mybash repository${RC}" + exit 1 fi + cd "$LINUXTOOLBOXDIR/mybash" || exit command_exists() {