すべてのログイン設定を~/.bash_profile
に集中したいと思います。デフォルトで~/.bashrc
がありましたが、~/.bash_profile
に置き換えました。
ただし、ログインすると、~/.bash_profile
の前の何かが取得され、以下が表示されます。
Linux ubnt10-dev1 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
System information as of Fri May 9 12:17:39 EDT 2014
System load: 0.01 Processes: 74
Usage of /: 5.5% of 18.58GB Users logged in: 0
Memory usage: 4% IP address for eth0: 123.x.x.x
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Fri May 9 12:11:52 2014 from 123.x.x.x
~/.bash_profile
で定義された自分のスプラッシュグリーティングのみが表示されるように、これを削除したいのですが、ユーザーがログインしたときにソース/実行されたスクリプトのロジック/シーケンスがわかりません。
ボーナスとして、ユーザーがログインしてセッションを開始したときだけでなく、システムの起動時の自動化されたソーシング/実行のシーケンスについても知りたいと思っています。
これは一種の複雑です。まず、詳細は実行しているシェルの種類によって異なります。 自分を盗用する :
端末エミュレータ(gnome-terminal
など)を開くと、対話型の非ログインシェルと呼ばれるものを実行しています。
コマンドラインからマシンにログインするか、su - username
などのコマンドを実行すると、interactive loginShellが実行されます。
グラフィカルにログインすると、まったく異なるものが実行されます。詳細はシステムとグラフィカル環境によって異なりますが、一般的には、ログインを処理するのはグラフィカルシェルです。多くのグラフィカルシェル(Ubuntuのデフォルトを含む)は/etc/profile
および~/.profile
を読み取りますが、それらのすべてが読み取りを行うわけではありません。
最後に、シェルスクリプトを実行すると、非対話型、非ログインシェルで実行されます。
起動時にbashが読み取るファイルは、実行中のシェルのタイプによって異なります。以下は、man bash
(強調鉱山)のINVOCATIONセクションの抜粋です。
Bashが対話型ログインShell として、または--loginオプションを使用した非対話型シェルとして呼び出されると、最初にファイルからコマンドを読み取り、実行します/ etc/profile (そのファイルが存在する場合)。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをその順序で探し、最初に存在するコマンドを読み取って実行しますそして読みやすいです。 --noprofileオプションは、この動作を禁止するためにシェルを起動するときに使用できます。
インタラクティブシェルがログインシェルではない場合、bashは/etc /からコマンドを読み取り、実行しますbash.bashrc および~/.bashrc(これらのファイルが存在する場合)。これは、-norcオプションを使用して禁止できます。 --rcfileファイルオプションは、bashに/etc/bash.bashrcおよび〜/ .bashrcの代わりにファイルからコマンドを強制的に読み取らせて実行させます。
これらは初期化ファイルです。また、グローバル環境変数を設定できる/etc/environment
がありますが、それはソースではなく読み取りです(内部のコマンドは実行されませんが、変数定義は設定されます)。
さて、あなたが見る挨拶はまた別のものです。これは/etc/motd
で設定され、pam_motd
を介して表示されます。 man motd
で説明されているように:
/ etc/motdの内容は、ログインに成功した後、ログインシェルを実行する直前にpam_motd(8)によって表示されます。
「motd」という略語は「今日のメッセージ」を表しており、このファイルは伝統的にまさにその目的で使用されてきました(すべてのユーザーへのメールよりもはるかに少ないディスク容量が必要です)。
Debian GNU/Linuxでは、/ run/motd.dynamicのコンテンツも表示されます。このファイルは、ブート時に/etc/init.d/motdによって生成されます。
メッセージを削除するには、/etc/motd
ファイルを空にし、/etc/init.d/motd
が存在する場合は何も生成されないようにします。
とにかく、表示する出力に基づいて、ssh
経由でログインしているようです。つまり、インタラクティブログインShell を実行しています。その意味については上記を参照してください。そのため、要約すると、ログイン時に気になるものは次のとおりです(この順序で)。
pam_motd
モジュールを介して、/etc/motd
の内容を表示します。 pam_env
モジュールを介して、/etc/environment
および~/.pam_environment
から環境変数を設定します。/etc/profile
/etc/bash.bashrc
(デフォルトのUbuntu /etc/profile
ソース/etc/bash.bashrc
)。~/.bash_profile
。ここで読み取ることができた他のファイル(~/.profile
および~/.bash_login
)は、~/.bash_profile
が存在するため無視されます。Ssh経由でログインしたときに表示される情報は、/ etc/profileを参照する前に作成されます。 /etc/update-motd.dのファイルのシーケンスを見てください。これにより、表示されているメッセージがさまざまなスクリプトによって生成された場所がわかります。