GNU/Linux >> Linux Esercitazione >  >> Linux

Alias ​​in subshell/processo figlio

Gli alias non vengono ereditati. Ecco perché sono tradizionalmente impostati in bashrc e non profile . Procurati il ​​tuo script.sh dal tuo .bashrc o invece quello a livello di sistema.


Se vuoi che vengano ereditati in sub-shell, usa invece le funzioni. Questi possono essere esportati nell'ambiente (export -f ), e le sub-shell avranno quindi quelle funzioni definite.

Quindi, per uno dei tuoi esempi:

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

Se ne hai molti, imposta prima l'esportazione:

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

È perché /etc/profile.d/ è usato solo dalla shell di login interattiva. Tuttavia, /etc/bash.bashrc è usato dalla shell interattiva non di login.

Poiché di solito imposto alcuni alias globali per il sistema, ho iniziato a creare /etc/bashrc.d dove posso rilasciare un file con alcuni alias globali:

    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. Processi UNIX / Linux:funzione C fork()

  2. Come far morire il processo figlio dopo che il genitore è uscito?

  3. Come trovare tutti i processi figlio?

  4. Come ottenere un valore di ritorno da CHILD PROCESS?

  5. Come uccidere un processo figlio dopo un determinato timeout in Bash?

Linux:come impostare l'affinità del processore di un processo su Linux?

Verifica se il processo esegue Mac Os X, quindi esegui il codice?

Reindirizzamento di un output di una subshell a un processo?

Linux – Hai bisogno di una spiegazione sulla dimensione del set residente/dimensione virtuale?

Linux:comando per eseguire un processo figlio "offline" (nessuna rete esterna) su Linux?

Come impostare gli alias di dominio in cPanel?