Linux에서는 로그인한 모든 사용자에게 무언가를 에코하는 스크립트를 제공합니다.

Linux에서는 로그인한 모든 사용자에게 무언가를 에코하는 스크립트를 제공합니다.

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

관련 정보