GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Aliase in Subshell/untergeordnetem Prozess

Aliase werden nicht vererbt. Deshalb werden sie traditionell in bashrc gesetzt und nicht profile . Geben Sie Ihre script.sh an von Ihrem .bashrc oder stattdessen die systemweite.


Wenn Sie möchten, dass sie an Sub-Shells vererbt werden, verwenden Sie stattdessen Funktionen. Diese können in die Umgebung exportiert werden (export -f ), und Sub-Shells haben dann diese Funktionen definiert.

Also, für eines Ihrer Beispiele:

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

Wenn Sie viele davon haben, stellen Sie zuerst den Export ein:

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

Das liegt daran, dass /etc/profile.d/ nur von der interaktiven Login-Shell verwendet wird. Allerdings /etc/bash.bashrc wird von der interaktiven Non-Login-Shell verwendet.

Da ich normalerweise einige globale Aliase für das System setze, habe ich begonnen, /etc/bashrc.d zu erstellen wo ich eine Datei mit einigen globalen Aliasnamen ablegen kann:

    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-Prozesse:C fork()-Funktion

  2. Wie kann man einen untergeordneten Prozess sterben lassen, nachdem der übergeordnete Prozess beendet wurde?

  3. Wie lege ich das Arbeitsverzeichnis des übergeordneten Prozesses fest?

  4. Wie verfolgt man einen untergeordneten Prozess mit strace?

  5. Wie kann man einen untergeordneten Prozess nach einem bestimmten Timeout in Bash beenden?

Linux – Wie stellt man die Prozessoraffinität eines Prozesses unter Linux ein?

Linux – Benötigen Sie eine Erklärung zur Größe des residenten Satzes/virtuellen Größe?

Linux – Befehl zum Ausführen eines untergeordneten Prozesses „offline“ (kein externes Netzwerk) unter Linux?

Wie richte ich Domain-Aliase in cPanel ein?

So legen Sie die Prozess-ID in Linux für ein bestimmtes Programm fest

Verwenden Sie prctl PR_SET_NAME, um den Namen für den Prozess oder Thread festzulegen?