답변:
별명은 상속되지 않습니다. 그들은 전통적으로 설정하는 이유 bashrc
와하지 profile
. 대신 또는 시스템 전체 script.sh
에서 소스를 제공하십시오 .bashrc
.
()
alias foo='echo foobar'
,, enter, (foo)
outputs 에서 의미했습니다 foobar
.
/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
서브 쉘로 상속 받으려면 대신 함수를 사용하십시오. 그것들은 환경으로 내 보내질 수 있고 ( export -f
), 서브 쉘은 그 함수들을 정의 할 것입니다.
예를 들어,
rmvr() { rm -rv "$@"; }
export -f rmvr
그것들이 많은 경우 먼저 내보내기로 설정하십시오.
set -a # export the following funcs
rmvr() { rm -rv "$@"; }
cpvr() { cp -rv "$@"; }
mvrv() { mv -rv "$@"; }
set +a # stop exporting