로그인 시 bash가 /etc/profile에 있는 파일을 자동으로 가져온다는 소식을 들었습니다.
/etc/profile에 간단한 내용을 작성해 보았습니다.
echo "echo 'foo'" > /etc/profile/foo.sh
그런데 다음과 같은 이상한 오류가 발생합니다.
bash: /etc/profile/foo.sh: Not a directory
올바른 방법이 있나요?
답변1
/etc/profile
파일입니다. 따라서 생성하려고 하면 오류가 발생합니다 /etc/profile/foo.sh
.
/etc/profile.d
당신이 고려하고 있는 디렉토리입니다. 거기에 있는 스크립트는 로그인 시 가져옵니다. 귀하의 예에서는 /etc/profile.d/foo.sh
.
아래에서 그 뒤에 있는 스크립트 논리와 도입 방법을 볼 수 있습니다. 유사한 코드가 /etc/profile
, /etc/bashrc
및 /etc/csh.cshrc
에 있습니다 /etc/csh.login
.
$ grep -A 8 ^for.*profile.d /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
$
이러한 스크립트를 생성하고 호출하는 예:
# echo id >/etc/profile.d/foo.sh
# su - steve
Last login: Sat Jun 23 21:44:41 UTC 2018 on pts/0
uid=1000(steve) gid=1001(steve) groups=1001(steve),4(adm),39(video),1000(google-sudoers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$
더 많은 정보를 원하시면 방문해주세요/etc/profile.d의 스크립트는 무엇을 합니까?