理解 *nixログインスクリプト
キーテイクアウト
- ログイン中にすべてのシェルで読み取られる /etc /プロファイルスクリプトは、$ PATHと$ PS1を設定し、 /etc /bash.bashrcを設定するために使用されます。 個々のbashユーザーアカウントは、ファイルのいずれかを作成できます〜/.bash_profile、〜/.bash_login、または〜/.profileを調達して、ユーザー固有の設定を可能にします。
- bashは、ログインシェルではないインタラクティブシェルとして開始されたときに/etc/etc/bash.bashrcと〜/.bashrcの両方を読み取りますが、debianは/etc/プロファイルと〜/.profile loginスクリプトからこれらのファイルを調達しますそれぞれ。
- 〜/.xsessionrcは、Xセッションにのみ適用される発売時に環境変数をロードするか、1回限りのユーティリティを実行するのに最適な場所です。 システム全体の環境変数の場合、/etc/profile.d/somefile.shは良い賭けですが、移動する可能性のある個人ディレクトリの場所では、.profileまたは.bashrcは、間のトレードオフに応じて使用できます。効率とセッションの柔軟性。
- 環境変数を設定したり、シェルやデスクトップ環境を変更するプログラムを実行する必要があるシナリオに直面したことはありませんが、それを呼び出すのに最適な場所を知りませんでしたか?
- これは一般的な状況です。多くのタスクでは、Debianパッケージングユーティリティの実行からIAASとその間のすべての管理まで、環境変数が正しく機能する必要があります。
これらの設定は、どこからでもロードされるべきではありません。時には、最高の場所について判断する前に考慮すべきいくつかの要因があります。
Debian Gnu/Linux Jessieのインストールに存在するいくつかの一般的なオプションを見て、それをすべて理解してみましょう。
/etc/profileデフォルトでは、Debianは /etc /プロファイルを提供します。これは、すぐに$パスを設定するために使用されます(コマンド検索パスの宣言に使用)。
利便性のために、ルートユーザー(ユーザーID 0)は、他のすべての人に定義された異なるパスを取得します。これは、システムバイナリ(SBIN)の場所が、ルートとして実行する必要があるシステム管理またはプログラムのために理想的に予約されているためです。絶対に必要でない限り、ルートユーザーとしてプログラムを実行しないでください。
次に、 /etc /プロファイルは、プライマリプロンプト文字列を設定するために使用される$ ps1のセットアップを処理します。定義されたデフォルト値は、シェルがバッシュでない限り、「$」(またはrootの「#」)です。シェルがbashの場合、 /etc /bash.bashrcは代わりにそれを処理するように供給されます。 /etc/bash.bashrcについてはまもなく説明します
この時点で、ログイン中に /etc /プロファイルがすべてのシェルによって読み取られることを推測できます(つまり、ログインコマンドによって)。より効率的なBashビルトイン変数$ {UID}を使用してユーザーIDを決定する代わりに、 /etc /プロファイルは代わりにIDコマンドを呼び出します。派手なシェルプロンプトを定義する代わりに、BASH固有の構成が供給されました。BASHは、他の多くのシェルがそうではないU(ユーザー名)やH(ホスト名)などのバックスラッシュエスケープの特殊文字をサポートしているためです。 /etc/プロフィールは、ユーザーが自分でインストールする可能性のあるシェルと互換性があるように、POSIXに準拠するようにしてください。
Debian Gnu/Linuxには、Posix(および一部のバークレー)の拡張機能のみを実装することのみを目的とする基本的なシェルであるDashが事前にインストールされていることがよくあります。 /etc /プロファイルを変更(最初にバックアップする!)を変更してps1 = '$'行を別の値を設定し、ダッシュログインをシミュレートする(dash -lコマンドを介して)、Dashが定義したプロンプトを使用することがわかります。ただし、代わりに-L引数なしでダッシュコマンドを呼び出す場合、 /etc /プロファイルは読み取られておらず、ダッシュはデフォルト値に戻ります(偶然には、変更する前の元のPS1値が何であるか)。/etc /プロフィールについて注意する最後の興味深いことは、最後の次のスニペットです:
言い換えれば、/etc/profile.d /*.sh globと一致する読みやすいものはすべて供給されます。これは重要です。なぜなら、編集 /etc /プロファイルが実際には必要ないことを示しているためです(したがって、以前に作成したバックアップを復元してください!)。上記の変数はすべて、別のファイルでオーバーライドできます。これを行うことの利点の1つは、DebianのAPTパッケージ管理システムが通常変更された構成ファイルにタッチしないため、システムのアップグレードが /etc /プロファイルに変更を自動的に追加できることです。
<span>if [ "<span><span>`id -u`</span>"</span> -eq 0 ]; then </span> <span><span>PATH</span>="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" </span><span>else </span> <span><span>PATH</span>="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" </span><span>fi </span><span>export PATH</span>
/etc /プロファイルの潜在的な問題の1つは、システム全体のパスにあることです。つまり、そこに変化がシステム上のすべてのユーザーに影響を与えます。パーソナルコンピューターでは、それはあまり問題のようには見えないかもしれませんが、それに変更するにはルートの特権が必要です。これらの理由により、個々のBASHユーザーアカウントの各ファイルのいずれかを作成できます〜/.bash_profile、〜/.bash_login、または〜/.profileを調達することができます。残りのファイルは無視されます。ダッシュなどの他のシェルは、似たようなものをサポートしますが、〜/.profileのみを見てください。これにより、ユーザーはbash固有の状況のために.bash_profileを作成できます。また、ログインシェル(chsh -s dashコマンドなど)としてダッシュまたは他のシェルに切り替えることがある場合、〜/.profileは予約できます。そのユースケース。
これの重要性を念頭に置いておく必要があります。デフォルトのDebian Skeleton Directory(/etc/skel、ファイルとディレクトリを新しいユーザーアカウントにコピーするために使用するために使用される)には、.bash_profileまたは.bash_loginファイルではありません。また、DebianはデフォルトのユーザーシェルとしてBashを使用します。したがって、多くのユーザーは、.profile。
RVMなどのプロジェクトのインストール手順を見てきましたが、ユーザーに.bash_profileファイルを作成するように指示しますが、これはユーザーのシェル環境を壊す可能性があるため、危険です。ユーザーが.profileを変更しなかったとしても、$ PATH環境変数に〜/binを追加するデフォルトの〜/.profile機能を利用している可能性があります。これはもはや機能しません。安全性を向上させる可能性のあるオプションの1つは、ユーザーアカウントを作成する前に、 /etc /skelの.bashrcにsymlinkとして.bash_profileを追加することです。Debian Jessieのデフォルトのプロファイルスクリプトを見ると、次のスニペットを見ることができます。
これは、 /etc /プロファイルで見たものに似ています。ここで、 /etc/bash.bashrcが見つかった場合に供給され、シェルがbashです。これの重要性については、次のセクションで説明します。/etc/bash.bashrcおよび〜/.bashrc
<span>if [ "<span><span>`id -u`</span>"</span> -eq 0 ]; then </span> <span><span>PATH</span>="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" </span><span>else </span> <span><span>PATH</span>="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" </span><span>fi </span><span>export PATH</span>
.bashrcはコマンドエイリアスを追加するのに最適な場所です。実際、一部の人々は非常に多くのエイリアスを持っているので、それらを別のファイルに保持することを好みます。 Debianのデフォルトの.bashrcは、〜/.bash_aliaseを探し、ファイルが存在する場合はソースを調達しているため、代わりにすべてのバッシュエイリアスを自由に保管してください。 .bashrcは、ユーザーが$ PS1や$ histsize(維持するコマンド履歴の量)などのシェル変数を上書きするのに最適な場所です。 Debianのデフォルトの.bashrcは100行の長さですが、非常に簡単な読書であり、よくコメントされています。名前が示すように、.bashrcは非バッシュシェルによって調達されるとは予想されていません。
〜/.xsessionおよび〜/.xsessionrcディスプレイマネージャーを介してローカルにログインしているGNU/Linuxデスクトップユーザー(Gettyを介したログインプログラムとは対照的に)、/etc/Profileおよび〜/.profileが機能するとは期待できない場合。一部のディスプレイマネージャーは、GNOMEディスプレイマネージャーなど、これらのファイルを誤って直接調達していますが、LightDMなどの他のDMはそうではありません。幸いなことに、他のオプションがあります。
Xウィンドウシステムセッションが開始されたとき(仮想端子のディスプレイマネージャーまたはStartXを使用することに関係なく)、/etc/x11/xsessionシェルスクリプトが実行されます。これは基本的に、ログインシェルで使用される /etc /プロファイルに相当し、xのみであり、調達されていませんが、直接実行されます。また、かなり複雑です。 /etc/プロファイルが/etc/profile.d、/etc/x11/xsessionソースのスクリプトのスクリプトで/etc/x11/xsession.dのスクリプトで読み取る方法と同様。このディレクトリのすべてのスクリプトは番号から始まるため、スクリプトは番号付きの順序でロードされます。
debianジェシーには、40x11-common_xsessionrcという名前のファイルが含まれています。それがするのは、〜/.xsessionrcが読みやすいかどうかを確認することだけで、(もしそうなら)調達しています。これにより、〜/.xSessionrcは、環境変数をロードするのに最適な場所になり、Xセッションにのみ適用される発売時に1回のユーティリティ(XrandrやXmodmapなど)を実行できます。これを使用して、/etc/profile、〜/.profileが必要な場合に使用することもできます。したがって、そこで指定された環境変数は、セッションマネージャーによっても継承されます(まだそうでない場合)。 .xsessionrcはデフォルトでは存在しないため、作成する必要があることに注意してください。/etc/x11/xsessionでファイルを閲覧し続けると、セッションマネージャーが 負荷。 〜/.xsessionファイルが存在し、実行可能な場合、99x11-common_startの一部として保存および実行されます。 〜/.xSessionはセッションマネージャーの実行を目的としているため、Xセッションはログアウトし、このスクリプトが終了すると表示マネージャーログイン画面に返されます。
〜/.xsessionrc、〜/.xsessionはデフォルトでは存在しないため、必要に応じて作成する必要があります。次のように見えるシンプルな.xsessionスクリプトを作成する場合があります。
ユーザーがインタラクティブなバッシュログインシェルを実行したときに読み取られたファイルを以前にカバーしましたが、ログアウトするときにプログラムを実行したい場合はどうでしょうか。そのユースケースのために、〜/.bash_logoutはあなたの友達です。 Debianに含まれるデフォルトは、画面をクリアするためにのみ使用されます(これはセキュリティの観点から重要だと思います)が、たとえば、他の目的には想像力が少し使用できます。たとえば、数秒前にリマインダーを表示するために使用できます。マシンから離れてください。 主な制限要因は、.bash_logoutがインタラクティブなシェルからログアウトするときにのみ読み取られることであり、xセッションからログアウトするときにロードされると想定できないことです。
例 個人ログインセッションのみに環境変数が必要な場合はどうなりますか? Xセッションのみに関係する場合は、〜/.xsessionrcに追加できます。これには、X Session Managerを起動する前に設定されているため、X Session Managerを通じて開始されたすべてのプログラムが通常利用できるという利点があり、したがって継承されます。たとえば、一部のグラフィックドライバーは、 so.xsessionrcにそれを配置すると、すべてのプログラムに影響を与えるはずです。 うまくいけば、Login and LogoutスクリプトがDebian GNU/Linuxシステムでどのように機能するかをよりよく理解できるようになりました。これらのログインスクリプトとログアウトスクリプトのために特に興味深いまたは創造的な用途を作成または遭遇した場合、コメントでお知らせください。
このシリーズで次に、Dotfile管理オプションについて説明します。
nixログインスクリプトの環境変数の設定は、スクリプトにエクスポートVarname =値などの行を追加するのと同じくらい簡単です。これにより、環境変数のVarnameがログインセッションの期間中の値値に設定されます。エクスポートコマンドを使用して、変数をサブプロセスで利用できるようにすることもできます。たとえば、エクスポートパス= $ path:/path/to/dirはパス環境変数に/path/to/dirを追加し、そのディレクトリの実行可能ファイルをフルパスを指定する必要なく利用可能にします。 nixログインスクリプトを使用してサービスを実行しますか? nixログインスクリプトでパスを管理するには、パス環境変数にディレクトリを追加することが含まれます。これは、エクスポートパス= $ path:/path/to/dirなどの行で実行できます。これにより、フルパスを指定する必要なく、そのディレクトリ内の実行可能ファイルが利用可能になります。 〜/.bash_logout
あなたが利用できる最も一般的なオプションをカバーすることについて。インストール( /etc /環境など)に応じて、他のオプションが存在する場合がありますが、他のプラットフォームに存在する可能性が高いとは考えておらず、それらに触れる必要性はほとんどありませんでした。
では、システム全体の環境変数をどこに配置する必要がありますか?環境変数がすべてのユーザーに影響を与える場合、/etc/profile.d/somefile.shは良い賭けです。ただし、これは、ソース /など /プロファイルを使用しているログインマネージャーを使用していることを前提としています。そうでない場合は、(管理者として)/etc/x11/xsession.d/にスクリプトを追加することができます。
スクリプトを個人ディレクトリの場所を見つけてパスに追加する場合は、ディレクトリがたくさん移動するかどうかを考慮する必要があります。それを.profileに行うためにコードを追加すると、ユーザーはユーザーセッション中にディレクトリの変更を反映するためにパスを再度ログアウトしてから再度ログアウトする必要があります。代わりにコードを.bashrcに追加した場合、ユーザーがXtermを開くたびにコードが実行されることを意味します。したがって、トレードオフを検討する問題です
はい、nixログインスクリプトを使用してパッケージを管理できます。 Nixには、一貫した再現性のある方法でパッケージをインストール、アップグレード、削除できる強力なパッケージ管理システムがあります。 Nixログインスクリプトを使用して、ログインするたびにパッケージを自動的にインストールまたは更新できます。環境には常に最新のバージョンが必要なソフトウェアを確保できます。 nixログインスクリプトを使用して環境変数を設定するにはどうすればよいですか?
はい、nixログインスクリプトを使用してサービスを開始できます。これは、目的のサービスを開始するスクリプトにコマンドを追加することで実行できます。たとえば、SystemCtl Start ServicEnameなどのラインを追加して、SystemDサービスを開始できます。サービスを開始するために適切なアクセス許可が必要になるため、Sudoまたはrootでスクリプトを実行する必要がある場合があります。 nixログインスクリプトをログイン時に自動的に実行するには、シェルのスタートアップファイルの適切な場所に追加する必要があります。 Bashの場合、これは通常、ホームディレクトリの.bash_profileまたは.bashrcファイルです。このファイルにソースのような行を追加することができます。新しいバッシュセッションを開始するたびにnixログインスクリプトを実行するためにnix-profileを実行できます。 >
はい、nixログインスクリプトを使用して、シェルプロンプトをカスタマイズできます。これは、スクリプトにPS1環境変数を設定することで実行できます。たとえば、PS1 = "u@h:w $"のエクスポートは、プロンプトを設定してユーザー名、ホスト名、および現在のディレクトリを表示します。
以上が理解 *nixログインスクリプトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このGOベースのネットワーク脆弱性スキャナーは、潜在的なセキュリティの弱点を効率的に識別します。 Goの同時機能機能を速度で活用し、サービスの検出と脆弱性のマッチングが含まれます。その能力と倫理を探りましょう

このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください
