Centos에서 yum을 통해 모든 대화형 쉘에 있는 스크립트를 설치하고 제거하는 방법은 무엇입니까?

Centos에서 yum을 통해 모든 대화형 쉘에 있는 스크립트를 설치하고 제거하는 방법은 무엇입니까?

모든 사용자에 대한 모든 대화형 쉘 시작 시 상황별 경고 메시지를 추가할 수 있는 rpm을 패키지, 설치 및 제거하고 싶습니다(실제로는 적어도 bash ssh 세션 및 bash gnome 터미널 모두). 기본적으로 코드는 파일이 누락된 경우 경고 메시지를 표시합니다.

자, 후보자는 /etc/bashrc, /etc/profile, /etc/profile.d/myscript.sh, 입니다 /etc/skel/.bash_profile./etc/skel/.bashrc

가장 쉬운 방법은 무언가를 설치하는 것이지만 /etc/profile.d실제로 내 요구 사항(ssh bash 세션)을 해결하지는 않습니다.
나는 올바른 장소가 있다고 생각 /etc/skel/.bashrc + exisiting .bashrc하지만 이러한 파일에 내 코드를 추가/제거하는 것이 안전하지 않다고 생각합니다. 내 이해는 파일을 넣고 제거하는 것 yum입니다 rpm. 텍스트 파일을 안전하게 수정하도록 설계되지 않았습니다.
나는 다음과 같은 것을 원합니다 /etc/bashrc.d/...

어디로 가야하나요?안전하게 설치하다모든 대화형 쉘에서 사용할 수 있도록 경고 메시지를 표시하고안전하게 제거됨? 안전하다는 것은 원하지 않는 것을 삭제하지 않고 의미합니다.

답변1

해당 파일은 rpm 에서 파일 /etc/bashrc로 표시됩니다 . 즉, 업데이트 하면%config(noreplace)setupyum~ 아니다그것을 교체하십시오. 패키지를 업그레이드할 때 업데이트된 가 있으면 가 /etc/bashrc생성 yum됩니다 /etc/bashrc.rpmnew. 그래서 당신은~할 수 있다원한다면 안전하게 수정하세요.

하지만 그럴 필요는 없을 것 같습니다. /etc/bashrccentos/rhel/fedora/etc 시스템을 살펴보면 다음을 찾을 수 있습니다.

if ! shopt -q login_shell ; then # We're not a login shell
[...]
    for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done
[...]

/etc/profile.d해당 코드는 로그인 셸(대신 실행되는 경우 /etc/profile)과 비로그인 셸(이 경우 이 루프가 실행을 관리함) 모두에 대해 파일이 실행되도록 보장합니다 .

즉, 당신은이미이 있고 /etc/bashrc.d이름은 입니다 /etc/profile.d.

관련 정보