使用者登錄後,消息顯示到 bash shell 的不同方式有哪些?
我有一個使用 bash 作為其外殼的 CentOS 5.7 VPS,它在通過 SSH 登錄後立即顯示品牌問候語。我一直在嘗試修改它,但似乎無法在通常的地方找到它的位置。到目前為止,我已經查看了
motd
文件並檢查sshd_config
了橫幅文件設置。未設置橫幅文件。我還能在哪裡找到登錄消息的位置?
傳統的 Unix 系統
/etc/motd
會在使用者成功通過身份驗證之後和呼叫使用者的 shell 之前顯示。在現代系統上,這是由pam_motd
PAM 模組完成的,該模組可以配置/etc/pam.conf
或/etc/pam.d/*
顯示不同的文件。
/etc/motd
如果該選項PrintMotd
未在/etc/sshd_config
.PrintLastLog
如果沒有關閉它還可以列印上次登錄的時間。另一條傳統消息可能會告訴您是該消息
You have new mail
還是You have mail
. 在具有 PAM 的系統上,這是由pam_mail
模組完成的。某些 shell 可能會列印有關可用郵件的消息。使用者的 shell 啟動後,使用者的啟動文件可能會列印額外的消息。對於互動式登錄,如果使用者的登錄 shell 是 Bourne 樣式的 shell,請查看
/etc/profile
,~/.profile
, plus~/.bash_profile
和~/.bash_login
bash。對於 zsh 的互動式登錄,請查看/etc/zprofile
、/etc/zlogin
、/etc/zshrc
、~/.zprofile
和. 對於 csh 的互動式登錄,請查看和.~/.zlogin``~/.zshrc``/etc/csh.login``~/.login
如果使用者的登錄 shell 是 bash 並且這是一個非互動式登錄,那麼 bash 會執行
~/.bashrc
(這真的很奇怪,因為~/.bashrc
只有當 shell 不是登錄 shell 時才會為互動式 shell 執行)。這可能是麻煩的根源;如果 shell 不是互動式的,我建議在頂部包含以下程式碼段以~/.bashrc
擺脫困境:if [[ $- != *i* ]]; then return; fi