AlmaLinux/RedHat 기반 시스템에서는 항상 bashrc를 가져옵니다.

AlmaLinux/RedHat 기반 시스템에서는 항상 bashrc를 가져옵니다.

내 인프라는 주로 Ubuntu 시스템과 많은 사용자로 구성되어 있습니다. 우리는 원격 액세스를 위해 X2GO를 사용하는 것을 좋아하며 훌륭하게 작동합니다. 현재 AlmaLinux 8.8 시스템이 있습니다. X2GO로 로그인하고 터미널을 열 때 프롬프트가 혼란스럽고 다음과 같은 내용만 표시됩니다 bash-4.4$. 우리는 X2GO에서 터미널을 여는 것이 로그인 셸이 아니기 때문에(죄송합니다. 더 이상 확실하지 않습니다. 편집을 참조하세요. ) Ubuntu /etc/bashrc에 의해 실행되지 않습니다/etc/profile . 시스템은 .bashrc사용자 홈 디렉터리의 로컬 디렉터리 없이 작동하도록 구성되어 있습니다. 따라서 모든 홈 디렉토리는 no 에 있습니다 .bashrc.

나는 항상 AlmaLinux 시스템에서 작업을 수행하고 싶습니다 /etc/bashrc. 이는 새 사용자를 위한 새 홈을 생성하는 메커니즘에 액세스할 수 없고 모든 사용자에게 로컬 .bashrc. 이것을 달성하는 방법? Alma 머신에 대한 sudo 권한이 있습니다.

[편집] 다시 확인한 후 다음 위치에서 이 블록을 발견했습니다 /etc/profile.

if [ -n "${BASH_VERSION-}" ] ; then
        if [ -f /etc/bashrc ] ; then
                # Bash login shells run only /etc/profile
                # Bash non-login shells run only /etc/bashrc
                # Check for double sourcing is done in /etc/bashrc.
                . /etc/bashrc
       fi
fi

답변1

설명이 좀 과하네요. 로그인 쉘은 profile파일 계열을 읽지만 파일 bashrc자체는 읽지 않습니다. 비로그인 쉘이므로 읽지는 않지만 profile읽습니다 bashrc. 우분투의 경우, 그렇습니다. .bashrc아마도 at이 없기 때문에 local이 없도록 설정되었을 수 있습니다 /etc/skel. 여기에 기본 파일을 추가하고 모든 신규 사용자를 위해 해당 파일을 복사할 수 있습니다.

로그인 쉘이 읽게 하는 것에 관해서는 bashrc개인적으로 필요한 설정을 대신 사용하는 것이 좋습니다 /etc/profile. 하지만 그렇게 하고 싶지 않다면 /etc/profile소스를 만들 수 있습니다 /etc/bash.bashrc. 이것을 다음 항목에 추가하세요 /etc/profile:

if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
  if [ -f /etc/bash.bashrc ]; then
    . /etc/bash.bashrc
  fi
fi

/etc/bash.bashrc쉘이 bash를 (POSIX 모드의 bash) /etc/profile로 읽지 않고 bash를 읽는 경우 이는 소스가 됩니다. /bin/sh내가 아는 한 일부 Linux 배포판은 기본적으로 Debian 제품군의 배포판에서만 이 작업을 수행하지만 다른 배포판도 이 작업을 수행할 수 있습니다. 이는 /etc/bash.bashrc쉘이 대화형이 아닐 때 종료되는 코드가 있다고 가정합니다. 내 아치에서는 다음과 같습니다.

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

비슷한 줄이 없으면 /etc/bash.bashrcbashrc의 설정이 활성화되기를 원하지 않는 비대화형 쉘에서 읽지 않도록 하나를 추가하십시오.

관련 정보