回答編集履歴
2
補足
test
CHANGED
@@ -4,13 +4,14 @@
|
|
4
4
|
シェル自体は環境変数SHELLが定義されていれば変更しません(下記※参照)。
|
5
5
|
|
6
6
|
なので、`/etc/passwd`が`/bin/ksh`であれば、ログイン処理が行われれば、ログインプロセスが環境変数SHELLに`/bin/ksh`を設定するはずです。
|
7
|
-
質問にはシェルをどうやって起動したかが書かれていませんが、`docker exec -it CONTAINER /bin/ksh`等ではログイン処理をするわけでは
|
7
|
+
質問にはシェルをどうやって起動したかが書かれていませんが、`docker exec -it CONTAINER /bin/ksh`等ではログイン処理をするわけではなく単にkshコマンドを起動するだけでしょう。
|
8
8
|
|
9
9
|
環境変数SHELLが未定義の場合は、下記のように`/bin/sh`が設定されるみたいなので、やはり未設定のままでkshが起動されていると思われます。
|
10
10
|
```sh
|
11
11
|
$ env -u SHELL ksh -c 'echo $SHELL'
|
12
12
|
/bin/sh
|
13
13
|
```
|
14
|
+
何故`/bin/ksh`でなく`/bin/sh`が設定されるのかは`man ksh`からは不明です。`/bin/sh`上位互換として作られたからですかね。
|
14
15
|
|
15
16
|
# 参考
|
16
17
|
※ もちろん、変更しないと言っても、`bashrc` `zshrc` `kshrc`等で`SHELL`を変更するように書かれていればそれが実行されて上書きします。手元の`/etc/bashrc`には`SHELL=/bin/bash`と書かれていますので、対話型でbashを起動すると上書きされます。
|
1
微修正
test
CHANGED
@@ -12,10 +12,11 @@
|
|
12
12
|
/bin/sh
|
13
13
|
```
|
14
14
|
|
15
|
+
# 参考
|
15
|
-
※ もちろん、`bashrc` `zshrc` `kshrc`等で`SHELL`を変更するように書かれていればそれが実行されて上書きします。手元の`/etc/bashrc`には`SHELL=/bin/bash`と書かれていますので、対話型でbashを起動すると上書きされます。
|
16
|
+
※ もちろん、変更しないと言っても、`bashrc` `zshrc` `kshrc`等で`SHELL`を変更するように書かれていればそれが実行されて上書きします。手元の`/etc/bashrc`には`SHELL=/bin/bash`と書かれていますので、対話型でbashを起動すると上書きされます。
|
16
17
|
```sh
|
17
18
|
$ SHELL=/bin/ksh bash -c 'echo $SHELL'
|
18
|
-
/bin/ksh
|
19
|
+
/bin/ksh # bash -c では /etc/bashrcは読まないので不変
|
19
20
|
$ SHELL=/bin/ksh bash -ic 'echo $SHELL'
|
20
21
|
/bin/bash # bash -ic だと /etc/bashrcを読むので上書き
|
21
22
|
```
|