17
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ログインシェルとインタラクティブモードの話

Last updated at Posted at 2014-10-08

bashやzshの初期化ファイルについて調べているとよく出てくるのですが、
いまいち意味が分からなかったためまとめてみました。

※覚書レベルなので間違っているかもしれません。

##シェル変数と環境変数

###シェル変数
子プロセスにコピーが渡されない変数(exportしない変数)のこと。
補足:エイリアスも子プロセスにコピーが渡されない

エイリアスは子プロセス(./test.sh)に引き継がれないので以下はエラーとなる。

hoge.sh
#!/bin/bash

echo `hoge`
$ alias hoge='ls'
$ bash hoge.sh
./test.sh: line 3: hoge: コマンドが見つかりません

※"rc"ファイルにalias hoge="ls"を定義していても、非インタラクティブシェルなのでエラーとなる。

###環境変数
子プロセスにコピーが渡される変数(exportする変数)のこと。

$ echo $TEST

$ export TEST=${TEST}hoge
$ echo $TEST
hoge

↓ 子プロセスを起動する。

$ bash
$ echo $TEST
hoge
$ export TEST=${TEST}hoge
$ echo $TEST
hogehoge

↓ 子プロセスを停止する。

$ exit
$ echo $TEST
hoge
$ export TEST=${TEST}hoge
$ echo $TEST
hogehoge

##ログインシェル

"/bin/bash"や"/bin/zsh"のオプションに"--login"を指定して起動した場合や、
suコマンドやsshコマンドの第一引数に"-"を指定して起動したシェルのこと(sshコマンドはデフォルトで第一引数に"-"が指定される)

ログインしたときに自動的にログインシェルが起動するが、
恐らく"/etc/passwd"ファイルからログインシェルを取得して"${シェルのパス} --login"みたいなことをしているんだろう(未確認)

また、ログインシェルとして起動しているかを確認したいならps auxfを実行すればいい(もっといい方法あると思う)
ログインシェルとして起動していれば"-${シェル名}"と表示される。

###初期化ファイル

ログインシェルを起動すると、初期化ファイルとして"profile"ファイルが呼び出される。
実際にはもっといろいろなファイルが呼び出されるが、ディストリビューションやシェルによってまちまちなので省略する。

suコマンドで管理者になるときに一般ユーザの環境変数を引き継いでしまうので、
suコマンドは第一引数に"-"を指定して起動するのが通例("profile"が呼び出されるため、環境変数が初期化される)

$ su -

##インタラクティブモード

インタラクティブシェルと書かれている記事を見ることが多いが、
ログインシェルと同じ階層に見えるため、
インタラクティブモードと書いたほうが分かりやすい気がする。

interactive:対話式の,双方向の

引数を指定せず起動したモードのこと。ユーザの入力に対して出力をする。ようするにプロンプトのこと。
ログインシェルは自動的にインタラクティブモードになる(ログインしたときにプロンプトが出る)

インタラクティブモードで起動
$ bash
$ /bin/zsh
非インタラクティブモードで起動
$ bash test.sh
$ ./test.sh

###初期化ファイル

インタラクティブモードを起動すると、初期化ファイルとして"rc"ファイルが呼び出される。

##参考URL
http://kanonji.info/blog/2013/06/20/bash%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%82%B7%E3%82%A7%E3%83%AB/

17
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?