私はログインシェルと非ログインシェルについて言及したいくつかの記事を読んでいますが、
それでも混乱しています。
ログインシェルと非ログインシェルの違いは何ですか? - UnixとLinuxスタックの交換
UNIXの考え方:ログインシェルか、非ログインシェルですか?
簡単に言えば、
私のコンピュータが起動したときに起動されるシェルはログインシェルではありませ
んか、それとも非ログインシェルではありませんか?
$ echo $SHELL
/bin/bash
$ echo $0
-bash
また、プログラムから呼び出されたシェルがログインシェルかどうかを確認するのに役立ちますか?
import subprocess
subprocess.run('ls -l', shell=True)
答え1
で述べたようにこの回答:
prompt> echo $0 -bash # "-" is the first character. Therefore, this is a login shell.
したがって、最初の例はログインシェルを示しています。
同じ回答でも指摘したように、
man bash
(検索通話)で情報を確認できます。以下は抜粋です:ログインシェルの引数の最初の文字は0または
-
オプションで始まります--login
。
そしてからPythonドキュメント:
... Popenは次のとおりです。
Popen(['/bin/sh', '-c', args[0], args[1], ...])
提供される唯一のオプションは、-c
ログインシェルではありません。