質問: ubuntuのデフォルトの〜/ .profileソースは〜/ .bashrcなのはなぜですか? これらは、13.10に付属の~/.profileの内容です(コメント行は削除されています)。if [ -n "$bash_version" ]; then if [ -f "$home/.bashrc" ]; then . "$home/.bashrc" fi fi if [ -d "$home/bin" ] ; then path="$home/bin:$path" fi これはdebianから継承されていますが、canonicalがそれを維持することにしたのはなぜですか?私の知る限り、これは標準的な* nix方式ではなく、これが発生しなかったさまざまなシステムを見てきましたので、それらには正当な理由があったに違いないと思います。これにより、ユーザーが~/.bashrcのソースを取得することを想定していないログインシェルを実行するとき(たとえば、マシンに投入するときなど)に予期しない動作が発生する可能性があります。私が考えることができる唯一の利点は、ユーザーを多くのスタートアップファイルと混同せず、ユーザーが.bashrcを単独で編集し、シェルタイプに関係なく読み取りできるようにすることです。ただし、ログインと対話型シェルで異なる設定を使用すると便利な場合が多いため、これは疑わしい利点です。また、ログインシェルは多くの場合、グラフィカル環境では実行されず、これらのファイルに設定した内容によっては、エラーや警告、問題が発生する可能性があります。それでは、なぜubuntuはこれを行うのですか、何が欠けていますか?
回答: これはubuntuの標準的な動作です。~/.bashrcは、対話型シェルごとのユーザーレベルの起動ファイルです。基本的にターミナルを開くと、 非ログイン、対話型シェル が起動し、~/.bashrcと~/.bashrcの内容が読み込まれ、現在のシェル環境にソースされ、エクスポートされます。現在のシェルでユーザー定義のshell variablesおよびfunctionsをすべて取得するのに役立ちます。また、このような行を見つけることができますif [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi 現在のシェル環境でser defined aliasesを取得します。これは、優れたユーザーエクスペリエンスを提供するためにも重要です。たとえば、ターミナルアプリケーション(viz、ping、wget、curl、lynxなど)のソースが取得されない限り、プロキシ資格情報を.bashrcに格納できます。 。または、ターミナルを開くたびにプロキシ認証情報を提供する必要があります。ubuntuのデフォルト.bashrcに加えて、多くのユーザーフレンドリーなエイリアス(lsおよびgrepがカラー化された出力を印刷するため)、さまざまなシェル変数の多くの新しい定義が含まれ、ユーザーエクスペリエンスが向上します。しかし、ssh loginまたは仮想コンソールでログインの場合、基本的にインタラクティブなログインシェルを取得します。シェル開始ファイルは~/.profileです。したがって、~/.bashrcを入手しない限り、.bashrcのこれらの有用な設定がすべて失われます。 ubuntuのデフォルトの~/.profileソース~/.bashrc避けるべきケース ~/.profileが~/.bashrcからソースされているときに、~/.bashrc内で~/.profileフォームを同時にソースしないでください。それは状況の無限ループを作成し、その結果、あなたがヒットしない限り、端末プロンプトは中断されます ctrl+c。このような状況では、~/.bashrcに行を入れると -xを設定ターミナルを開くと、ファイル記述子が停止していることがわかります。