11

Я установил псевдонимы в /etc/profile.d/alias.sh для каждой оболочки входа в систему. Но если я запускаю script.sh, я не могу использовать этот псевдоним. Как я могу установить псевдоним даже для подоболочек или дочерних процессов?

/etc/profile.d/alias.sh

alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';

2 ответа2

17

Псевдонимы не наследуются. Поэтому они традиционно устанавливаются в bashrc а не в profile . Вместо этого используйте свой script.sh из вашего .bashrc или общесистемного.

7

Это потому, что /etc/profile.d/ используется только интерактивной оболочкой входа в систему. Однако /etc/bash.bashrc используется интерактивной оболочкой без регистрации.

Поскольку я обычно устанавливаю некоторые глобальные псевдонимы для системы, я начал создавать /etc/bashrc.d где я могу удалить файл с некоторыми глобальными псевдонимами:

    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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .