bash 쉘이 포함된 CENTOS 7.x Linux가 있습니다. 일부 환경 변수를 설정하고 이러한 환경 변수와 관련된 일부 메시지를 에코해야 합니다(일종의 배너 등이지만 이러한 환경 변수가 있으므로 동적임).모두사용자가 로그인하거나 xterm/konsole을 열 때. 나는 그것을 설정했다/etc/profile.d/somescript.sh
로그인을 하면 실제로 환경변수가 설정되어 있는데 에코가 발생하지 않는 것을 확인했습니다. 왜 그런 겁니까?
/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
else
위의 지점 출력 리디렉션 때문인가요 ? 아니면 시작 스크립트 계층 구조의 다른 스크립트로 인해 화면이 지워질 수도 있나요? 아니면 다른 것입니까? 이 문제를 어떻게 해결할 수 있나요?
답변1
motd 배너를 사용하지 않을 이유가 없다면,서버 오류에 대한 답변입니다.~에서레티다음과 같은 내용이 도움이 될 수 있습니다.
/etc/motd
읽기만 하고 실행은 하지 않으므로 기술적으로 쉘 명령을 거기에 넣을 수 없습니다.
그러나 로그인 시 쉘 스크립트를 실행하여 동일한 결과를 얻을 수 있습니다. 이는 일반적 /etc/profile
으로 사용자가 로그인할 때마다 실행되는 스크립트를 조정하여 수행됩니다. 유용한 방법은 실행하려는 명령을 이름이 붙은 스크립트에 넣고 일반적으로 끝 부분에서 /etc/motd.sh
이 스크립트를 호출하는 것입니다 ./etc/profile