Linux

使用者登錄後,消息顯示到 bash shell 的不同方式有哪些?

  • April 5, 2019

我有一個使用 bash 作為其外殼的 CentOS 5.7 VPS,它在通過 SSH 登錄後立即顯示品牌問候語。我一直在嘗試修改它,但似乎無法在通常的地方找到它的位置。到目前為止,我已經查看了motd文件並檢查sshd_config了橫幅文件設置。未設置橫幅文件。

我還能在哪裡找到登錄消息的位置?

傳統的 Unix 系統/etc/motd會在使用者成功通過身份驗證之後和呼叫使用者的 shell 之前顯示。在現代系統上,這是由pam_motdPAM 模組完成的,該模組可以配置/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_loginbash。對於 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

引用自:https://unix.stackexchange.com/questions/32435