그룹의 모든 사용자에 대해 특정 bashrc 파일을 실행할 수 있습니까? /etc/profile에서 시스템 전체에 걸쳐 수행할 수 있다면 사용자 그룹에 대해서는 수행하지 않는 이유는 무엇입니까?
답변1
에 /etc/profile
다음을 추가합니다.
if [ "$(id -ng)" = "the_cool_group" ]; then
# do stuff for people in the_cool_group
fi
답변2
/etc/profile
모든 사용자에게 표시됩니다. ~/.profile
로그인한 사용자에게 표시됩니다. 이는 사용자의 홈 디렉토리에 있는 파일이며, 각 사용자는 자신의 디렉토리를 가지고 있습니다. 로그인 프로그램은 환경 변수를 HOME
사용자의 홈 디렉토리 경로로 설정합니다. 다른 파일(예: 및 )도 /etc/bash.bashrc
마찬가지 입니다 ~/.bashrc
. 많은 애플리케이션에는 사용자 홈 디렉터리 아래에 시스템 전체 구성 파일이 있고 /etc
사용자 홈 디렉터리 아래에 사용자별 구성 파일이 있습니다.
그룹에는 유사한 메커니즘이 없습니다. 그룹에는 홈 디렉터리가 없습니다. 따라서 그룹의 모든 사용자에게 프로필을 적용하는 직접적인 방법은 없습니다.
다른 답변에서 알 수 있듯이 조건문 내의 시스템 전체 쉘 초기화 파일에 명령을 추가하여 사용자가 특정 그룹에 속할 때만 실행되도록 할 수 있습니다. 사용자는 여러 그룹에 속할 수 있습니다. 그룹이 사용자의 기본 그룹이거나 사용자가 해당 그룹에 속할 때마다 명령을 실행하는 것은 사용자의 몫입니다.
case "$(id -gn)" in
foo) somecommand;; # the user's primary group is foo
esac
case ":$(id -Gn | tr \\n :)" in
*:foo:*) somecommand;; # the user belongs to the group foo
esac
.profile
와 의 차이점은 .bashrc
다음을 참조하세요.모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?
답변3
다음과 같이 추가할 수 있습니다 /etc/bash.bashrc
.
# running group-based bashrcs
for group in $(id -Gn); do
group_bashrc=/etc/bashrc-by-group/$group
if [ -f "$group_bashrc" ] && [ -r "$group_bashrc" ]; then
command . "$group_bashrc"
fi
done
그런 다음 하나를 만들고 거기에 /etc/bashrc-by-group/mygroup
그룹 구성원의 초기화를 넣을 수 있습니다 mygroup
.
그룹이 잘 길들여져 있다고 가정합니다. 그룹 이름에는 공백, 슬래시 또는 와일드카드가 포함되지 않고 .
OR 도 아니며 ..
그룹 이름과 그룹 ID 간에 일대일 매핑이 있습니다. 그렇지 않은 경우 id -G
대신 사용 id -Gn
하고 를 사용할 수 있습니다 /etc/bashrc-by-group/groupid
.
답변4
다음 항목에 추가할 수도 있습니다 /etc/profile.d/yourscript.sh
.
echo " $(groups) "|fgrep -q ' group '
if [ $? = 0 ] ; then
test -r /path/.group_profile && source /path/.group_profile
fi
이는 profile
파일 자체를 변경하는 것보다 더 깔끔할 수 있습니다.