GNU/Linux >> Znalost Linux >  >> Linux

Aliasy v subshell / podřízeném procesu

Aliasy se nedědí. Proto jsou tradičně nastaveny v bashrc a ne profile . Zdroj script.sh z vašeho .bashrc nebo místo toho celosystémový.


Pokud chcete, aby byly zděděny do podsložek, použijte místo toho funkce. Ty lze exportovat do prostředí (export -f ) a sub-shelly pak budou mít tyto funkce definované.

Takže pro jeden z vašich příkladů:

rmvr() { rm -rv "[email protected]"; }
export -f rmvr

Pokud jich máte hodně, pak nejprve nastavte export:

set -a # export the following funcs
rmvr() { rm -rv "[email protected]"; }
cpvr() { cp -rv "[email protected]"; }
mvrv() { mv -rv "[email protected]"; }
set +a # stop exporting

Je to proto, že /etc/profile.d/ používá pouze interaktivní přihlašovací shell. Nicméně /etc/bash.bashrc je používán interaktivním nepřihlašovacím shellem.

Jak obvykle nastavuji nějaké globální aliasy pro systém, začal jsem vytvářet /etc/bashrc.d kde mohu vypustit soubor s některými globálními aliasy:

    HAVE_BASHRC_D=`cat /etc/bash.bashrc | grep -F '/etc/bashrc.d' | wc -l`

    if [ ! -d /etc/bashrc.d ]; then
            mkdir -p /etc/bashrc.d
    fi
    if [ "$HAVE_BASHRC_D" == "0" ]; then
        echo "Setting up bash aliases"
            (cat <<-'EOF'
                                    if [ -d /etc/bashrc.d ]; then
                                      for i in /etc/bashrc.d/*.sh; do
                                        if [ -r $i ]; then
                                          . $i
                                        fi
                                      done
                                      unset i
                                    fi
                            EOF
            ) >> /etc/bash.bashrc

    fi

Linux
  1. UNIX / Linux Procesy:C fork() Funkce

  2. Jak nechat podřízený proces zemřít po odchodu rodiče?

  3. Jak najít všechny podřízené procesy?

  1. Jak získat návratovou hodnotu z CHILD PROCESS?

  2. Jak nastavím pracovní adresář nadřazeného procesu?

  3. Jak sledovat podřízený proces pomocí strace?

  1. Jak zabít podřízený proces po daném časovém limitu v Bash?

  2. Podřízený proces obdrží SIGINT rodiče

  3. Jak získat podřízený proces z rodičovského procesu