ユーザーがログインした後にbashシェルにメッセージを表示するためのさまざまな方法は何ですか?

ユーザーがログインした後にbashシェルにメッセージを表示するためのさまざまな方法は何ですか?

SSH経由でログインするとすぐに、ブランドのグリーティングを表示するシェルとしてbashを使用するCentOS 5.7 VPSがあります。修正しようとしましたが、通常の場所では見つからないようです。これまでのファイルを見てバナーファイルの設定をmotd確認してみました。sshd_configバナーファイルが設定されていません。

ログインメッセージはどこにありますか?

答え1

伝統的なUnixシステムディスプレイ/etc/motdユーザーが正常に認証された後、ユーザーのシェルを呼び出す前です。最新のシステムでは、さまざまなファイルを設定または表示できるpam_motdPAMモジュールを介してこれが行われます。/etc/pam.conf/etc/pam.d/*

/etc/motdPrintMotdこのオプションをオフにしないと、SSHサーバー自体が印刷するように構成されている可能性があります。/etc/sshd_config。オフにしないと、PrintLastLog最後のログイン時間も印刷される可能性があります。

You have new mail別の伝統的なメッセージはそれがまたはと言うことができますYou have mail。 PAMがあるシステムでは、pam_mailモジュールを介してこれが行われます。一部のシェルは、利用可能なメールのメッセージを印刷することがあります。

ユーザーのシェルを起動した後、ユーザーの起動ファイルは追加のメッセージを印刷できます。対話型ログインの場合、ユーザーのログインシェルがBourneスタイルのシェルの場合は、、/etc/profileplus ~/.profile~/.bash_profileおよびで~/.bash_loginbashを見つけます。 zshを使用した対話型ログインについては/etc/zprofile、、、/etc/zloginおよびを/etc/zshrc参照してください。 cshにインタラクティブにログインするには、およびを参照してください。~/.zprofile~/.zlogin~/.zshrc/etc/csh.login~/.login

ユーザーのログインシェルがbashで、これが非対話型ログインの場合、bashが実行されます(対話型シェルは、シェルがログインシェルではない場合にのみ実行される~/.bashrcため、これは本当に奇妙です)。~/.bashrcこれは問題の原因となる可能性があります~/.bashrc。シェルが対話型でない場合に問題を解決するには、上部に次のコードを追加することをお勧めします。

if [[ $- != *i* ]]; then return; fi

答え2

いくつかあります:

/etc/motd
/etc/issue
/etc/profile - Could echo the message
/etc/profile.d/* - Would be called from /etc/profile

また

/etc/bash_bashrc
/etc/.bashrc
/etc/bashrc
$HOME/.profile
$HOME/.bashrc

また、これらのスクリプトで呼び出されたすべてのプログラムを確認する必要があるかもしれません。fortuneこれを/usr/share分離するには、次のようにします。

. /etc/profile
. /etc/bash.bashrc
. $HOME/.profile
. $HOME/.bashrc

Ubuntuにもファイルがあります:

/etc/motd.tail

答え3

/etc/update-motd.d最新のシステムは、さまざまなマクロを実行して、ログイン時に更新情報、システム警告などを表示するようにmotdをカスタマイズできるようにMOTDコンポーネントを保存します。

カスタマイズを00次の優先順位の別のファイルとして追加します。99

99-footer/etc/motd.tail通常、最後に固定するだけで十分で、マクロ項目を使用したくない場合は読み込まれます。

答え4

確認できます/etc/shell。そこで変更しようとしたメッセージが見つかりました。 「#」でコメントを付けても動作しません。テキストを削除して直接追加するだけです。空白と新しい行は、ファイルに入れるときにも表示されます。

関連情報