OS X(10.6.4)端末でbashシェルを調べると、たとえばと入力するecho $0
と、シェルの前に次のようにダッシュが表示されます-bash
。このダッシュはどういう意味ですか?
OS X(10.6.4)端末でbashシェルを調べると、たとえばと入力するecho $0
と、シェルの前に次のようにダッシュが表示されます-bash
。このダッシュはどういう意味ですか?
回答:
これはbash
、ログインシェルとして呼び出されることを意味します。
man bash
言う:
ログインシェルは、引数ゼロの最初の文字がであるシェル
-
、または--login
オプションで開始されたシェルです。bashが対話型ログインシェルとして、または
--login
オプション付きの非対話型シェルとして呼び出されると、/etc/profile
ファイルが存在する場合は、最初にファイルからコマンドを読み取って実行します。そのファイルを読んだ後、それは探し~/.bash_profile
、~/.bash_login
、および~/.profile
、そのためには、および読み込み、存在し、読み取り可能である最初のものから実行するコマンドを。--noprofile
この動作は、シェルの起動時にこのオプションを使用して禁止できます。ログインシェルが終了すると、bashはファイルからコマンドを読み取り、実行します(
~/.bash_logout
存在する場合)。
あなたは見つけることができますlogin -pf
、あなたの中でps
、デフォルトではログインシェルを起動し、出力、。
実行login -pf
してみてlogin -pfl
、違いを確認してください。man login
違いを説明します:
-l
ログインによって実行されるプログラムに、これがログインセッションではないことを通知します(慣例により、ログインセッションは、ハイフンがの最初の文字としてプログラムに通知されargv[0]
ます。このオプションは、それを無効にします)。chdir(2)
ユーザーのホームディレクトリにアクセスできなくなります。。デフォルトではハイフンが追加されます(これはログインセッションです)。
echo $0
に入力echo $0
するctrl + alt + f1
と、結果は-bash
です。しかしctrl + alt + t
、によって呼び出されたtermianlに入力すると、結果はbash
(先頭のダッシュなし)になります。理由を説明してもらえますか?
--login
引数を指定してbashを起動すると、bashは変更されませんargv[0]
が、ログインシェルとして機能します。
man
引用への感謝