在 Linux 中为所有登录的用户提供一个脚本,该脚本会回显一些内容

在 Linux 中为所有登录的用户提供一个脚本,该脚本会回显一些内容

我们有带有 bash shell 的 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只读取而不执行,所以从技术上讲,你不能将 shell 命令放在那里。

但是,可以在登录时执行 shell 脚本,得到相同的结果。这通常是通过调整/etc/profile每次用户登录时执行的脚本来实现的。一种有用的做法是将要执行的命令放在名为的脚本中/etc/motd.sh,并从 调用此脚本/etc/profile,通常在其末尾左右。

相关内容