システム上でセッションを開く
login:
というプロンプトに応じる事によって自動的に起動される。
login
はシェル専用のものであり、
サブプロセスとして起動することはできない。
通常シェルは
login
を
exec login とみなすので、ユーザは現在のシェルから抜けることになる。
ログインシェル以外から login を起動しようとすると、
エラーメッセージが表示される。
login:プロンプトから起動した際は、
ユーザ名に続いて環境変数を入力する事もできる。
それらを入力する場合は NAME=VALUE という書式で行う。
この方法で全ての変数を設定できるわけではない。
例えば
PATH, HOME, SHELL
などは設定できない。
さらにログインシェルが /bin/sh の場合は
IFS も設定もできない。
次いで、必要な場合には、ユーザはパスワードを入力するよう促される。
パスワードを表示してしまわないよう、エコーは行われない。
数回以上パスワード入力に失敗すると
login は終了し、通信の接続は切断されてしまう。
アカウントに対してパスワードの有効期限が設定されている場合は、
先に進む前に新しいパスワードの設定を促されることもある。
セッションを続けるためには古いパスワードと
新しいパスワードを入力しなくてはならない。
詳しい情報は passwd(1) を参照すること。
ログインに成功すると、システムメッセージやメールの有無が表示される。
ログインディレクトリに長さ 0 のファイル .hushlogin を作っておけば、
システムメッセージファイルである
/etc/motd の表示を無効にできる。
メールに関するメッセージは、メールボックスの状態によって
You have new mail.,
You have mail.,
No Mail.
のいずれかになる。
ユーザ ID とグループの ID は
/etc/passwd ファイル中に記載されている値に従って設定される。
$HOME, $SHELL, $PATH, $LOGNAME, $MAIL
の値は、パスワードエントリのそれぞれのフィールドに従って設定される。
ulimit, umask, nice 値が、
GECOS フィールドのエントリーによって設定されることもある。
インストール時の設定によっては、
/etc/ttytype の指定に従って、
環境変数$TERMが tty 接続の端末の型 (terminal type)
に初期化されることもある。
コマンドインタプリタの初期化スクリプトが実行されることもある。
この機能についての詳しい情報は適当なマニュアルセクションを参照のこと。
サブシステムログインでは、
ログインシェルの最初の文字に * を置く。
渡されたホームディレクトリは、
ユーザが実際にログインする新しいファイルシステムのルートとして扱われる。
-p
-f
-h
-r