簡単なお問い合わせ:見たことがないことに気づきました。シェルボーン.bashrc
スクリプトに加えて、システムがログインするときにデフォルトのシェルを使用してインポートすると考えられます()${SHELL}
。これがなぜそうであるのか、そしてデフォルトのシェル以外のものを使ってログインスクリプトを実行するのが悪い習慣であると考えられるのだろうか。
ベストアンサー1
.bashrc
そして.bash_profile
いいえスクリプト。これはbash
、次の2つの方法のいずれかで実行されるたびに取得される構成ファイルです。
- インタラクティブ
- ログイン
これ呼ぶbashのマニュアルページの関連部分が関連しています。
ㅏログインシェル引数0の最初の文字は
-
、またはoptionで始まります--login
。一つインタラクティブシェルは、オプションではなく、引数やオプションなしで標準入力とエラーの両方が端末(によって決まる)に接続されるか、またはこのオプションで始まる
-c
方法です。 PS1はインタラクティブの場合に設定および含まれ、シェルスクリプトまたは起動ファイルがこの状態をテストできるようにします。isatty(3))
-i
$-
i
bash
次の段落では、
bash
起動ファイルの実行方法について説明します。ファイルが存在するが読み取れない場合、bashはエラーを報告します。チルダ文字は、後述のようにファイル名から拡張されます。 チルダ拡張内部に拡張 部分。bashを次のように使用するときインタラクティブログインシェルまたはこのオプションを持つ非対話型シェルとして、まず
--login
ファイルから読み込み、/etc/profile
ファイルが存在する場合はコマンドを実行します。ファイルを読み込んだ後~/.bash_profile
、~/.bash_login
、 を順に探して存在~/.profile
し、読み取れる最初のファイルからコマンドを読み込み実行します。--noprofile
このオプションを使用すると、シェルの起動時にこの動作を無効にできます。ログインシェルが終了すると、bash はファイルが
~/.bash_logout
存在する場合はそのコマンドを読み込み実行します。いつインタラクティブ非ログインシェルを起動するシェルとbashは、ファイルが
~/.bashrc
存在する場合はbashからコマンドを読み取り、実行します。--norc
このオプションを使用すると、これを抑制できます。この--rcfile file
オプションはbashです~/.bashrc
。
--norc
コマンドラインスイッチを介してロードされるタイミングを制御できます--noprofile
。スイッチを使用して、スイッチがロードされる場所を上書きすることもできます--rcfile
。
他の人が述べたように、このsource <file>
コマンドを使用するか、このコマンドを使用して. <file>
これらのファイルをロードする方法をエミュレートできます。
この機能は、次のように考えるのが最善です。
- Bashは裸の環境で始まります。
- その後、bashは対話型またはログインで呼び出された方法に従ってこれらのファイルのいずれかを開きます。
- ...ファイル内の各コマンドを1行ずつ実行します...
- 完了後、プロンプトの形式で制御を許可し、入力を待ちます。
通話方法
このトピックは時々言及されているようですので、ここにはbash
さまざまな呼び出し方法とその結果の簡単なチートシートがあります。メモ:助けるために、「sourced $HOME/.bashrc」および「sourced $HOME/.bash_profile」メッセージをそのファイルに追加しました。
基本通貨
bash-i
$ bash -i sourced /home/saml/.bashrc
bash-l
$ bash -l sourced /home/saml/.bashrc sourced /home/saml/.bash_profile
bash -il -または- bash -li
$ bash -il sourced /home/saml/.bashrc sourced /home/saml/.bash_profile
bash -c "..cmd.."
$ bash -c 'echo hi' hi
メモ:
-c
スイッチが単一のファイルを取得できなかったことに注意してください。
構成ファイルの読み取りを無効にする
バッシュ --norc
$ bash --norc bash-4.1$
bash --設定ファイルなし
$ bash --noprofile sourced /home/saml/.bashrc
バッシュ --norc -i
$ bash --norc -i bash-4.1$
バッシュ --norc -l
$ bash --norc -l sourced /home/saml/.bashrc sourced /home/saml/.bash_profile
bash --noprofile -i
$ bash --noprofile -i sourced /home/saml/.bashrc
bash --noprofile -l
$ bash --noprofile -l bash-4.1$
bash --norc -i -または- bash --norc -l
$ bash --norc -c 'echo hi' hi
Bashを呼び出すより深い方法
bash --rcfile $HOME/.bashrc
$ bash -rcfile ~/.bashrc sourced /home/saml/.bashrc
bash --norc --rcfile $HOME/.bashrc
$ bash --norc -rcfile ~/.bashrc bash-4.1$
これらは失敗しました
bash -i -rcfile ~/.bashrc
$ bash -i -rcfile ~/.bashrc sourced /home/saml/.bashrc sourced /home/saml/.bash_profile bash: /home/saml/.bashrc: restricted: cannot specify `/' in command names
bash -i -rcfile .bashrc
$ bash -i -rcfile .bashrc sourced /home/saml/.bashrc sourced /home/saml/.bash_profile bash: .bashrc: command not found
おそらくもっとあるかもしれませんが、アイデアを得たことを願っています...
また何ですか?
最後に、このトピックにとても魅了されているので、もっと読んで探索したい場合は、Bash初心者ガイド、特に次のセクションを確認することをお勧めします。1.2.ボーンアゲインシェルの利点。このセクションのさまざまなサブセクションは、「1.2.2.1. 通貨」渡す「1.2.2.3.3. 対話型シェルの動作」呼び出すことができるさまざまなメソッド間の低レベルの違いを説明してくださいbash
。