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

関連情報