私はログインシェルが何であるか、ログインシェルと非ログインシェルの違いを知っています。
しかし、私を混乱させるのはそれがどのように呼ばれるかです。-
パラメータ0でログインシェルを呼び出すとします。
引数0がシェル自体の名前である場合、呼び出しシェルに引数を渡すにはどうすればよいですか?
# -bash
-bash: -bash: command not found
わかりました。
# bash --login
# echo $0
# bash
私はまだそれを見ていません-bash
。
SSH経由でログインしている場合にのみ公開時に表示でき-bash
ますecho $0
。しかし、元の質問に戻って、
- Unix / Linuxでログインシェルを作成する方法は?
- ログインプロセス中にログインシェルを作成する「モノ」は何ですか?ログイン中にbashシェルを呼び出す「ログイン」プロセスの場合、パラメータ0を
-
bashシェルに渡すにはどうすればよいですか?
ベストアンサー1
SSHなどのプログラムは、次のコマンドを使用してシェルを起動sudo
します。su
exec
システムコールシリーズ。これらのシステムコールにより、呼び出しプログラムは関数を含むすべてのパラメータを指定できます。たとえば、次のようにsudo
ログインシェルを起動します。
$ strace -fe execve -o sudo.log sudo -i
root:~ $ echo $0
-bash
root:~ $ logout
$ grep bash sudo.log
19124 execve("/bin/bash", ["-bash"], [/* 31 vars */]) = 0
19140 execve("/bin/ls", ["ls", "/etc/bash_completion.d"], [/* 40 vars */]) = 0
最初の呼び出しでわかるように、渡された引数の配列はexecve
0bash
なので、["-bash"]
引数0も同じです-bash
。