非ログインシェルの設定は.bashrc
ファイルに移動し、ログインシェルの設定は.profile
ファイルに移動すると言われています。
ログインシェルと非ログインシェルが本当に意味するものは何ですか?
技術用語をできるだけ使用せずに説明してください。
Ubuntu Desktopの通常のユーザーである場合、onlyログインシェルは...デスクトップです(ログインするにはパスワードを入力します;)?まあ、技術的にはGUIを起動するのはログインシェルですが、専門用語を使用しています。そして、はい、.profile
の設定を読み取ります
あなた(通常のユーザー)がログインシェルを見るのはおそらくlooksがログインシェルのように見えるのは、デスクトップに問題があり、仮想端末に切り替える場合です Ctrl+Alt+F1 ショートカット。
ssh
を介してリモートでコンピューターにアクセスする(またはssh localhost
でローカルに接続する)bash -l
(またはsh -l
)を使用した初期ログインシェルのシミュレーションroot
ログインシェルをSudo -i
でシミュレートするSudo -u username -i
別の非root
ユーザーの場合su - username
(およびtheir password)を使用して別の非root
ユーザーとして認証するSudo login
コマンドを使用してユーザーを切り替える正しい「技術用語」なしで答えが得られるとは思いません。この質問は、「ログインシェルとは何ですか」というクエリに対してGoogleで最初に表示される質問なので、以下のより正しい答えを提供します。
ログインシェルは、単にログインシェルであると言われたシェルです。 notは、ログイン後にポップアップするシェルを意味しますが、通常、ログインするアプリケーションは、シェルに起動してログインシェルであると通知します。シェルにログインする必要があることを伝えるには、次の方法があります。
-l
または--login
引数を知っていると仮定してシェルを実行する(-l
を知らないシェルは知りませんが、--login
はいくつかのシェルでのみサポートされます) 。argv[0]
を-{some_string}
に設定してシェルを実行します(つまり、通常のargv[0]
またはその他の文字列の前にHYPHEN-MINUSを追加します)。これはsshとsuが行うことです:suは-su
as argv[0]
で実行可能ファイルを実行します(argv[0]
は現在実行中の実行可能ファイル名と関係があると考えているすべての人にこんにちは)、sshは-zsh
ユーザーが/bin/zsh
をシェルとして設定したとき。シェルのLoginessは、パスワードの入力や他の認証手順の実行とはまったく関係ありません。 sshやloginなどの一部のプログラム(またはurxvtなどの一部の端末エミュレーター)は、HYPHEN-MINUSで始まるargv[0]
を使用して、ログインシェルとしてシェルを実行します。 suやSudo(またはzsh:-
のセクションPRECOMMAND MODIFIERSで説明されているman zshmisc
プリコマンド修飾子を参照)のようなものはデフォルトではこれを行いませんが、そうすることができます。引数(つまり、bash -l
)を使用してログインシェルになるようシェルに指示する唯一のオプションがあります:コマンド引数付きのssh(リモートエンドで実行するものをsshに明示的に指示します)。
一般に、まずシェルを起動するために使用されるプログラムのドキュメントを参照して、シェルがログイン1であるかどうかを判断し、次にアプリがログインシェルを起動するかどうかを判断するテストを実行することをお勧めします(たとえば、echo
.profile
)。