我们有带有 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
,通常在其末尾左右。