.bashrcのPATHエクスポート行は何をしますか?


9

私はLinuxにそれほど興味がなく、チュートリアルに従って次の疑問を持っています。

bashrcファイルを変更する必要があります。このファイルにはどのような設定が含まれていますか?何かがbashシェル環境に関連していると思いますが、それについてはよくわかりません。

私はこの行を挿入しなければなりません:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

この行は正確には何ですか?

このexportステートメントは、他のプログラムで使用できるようにする新しい変数を作成するために使用されると思います。

しかし、この行は正確には何ですか?でPATH、私は定義していますという変数の名前は?なに$HOME

前の式のand とsectionの:間の記号はどういう意味ですか?PATH=$HOME/.local/bin$HOME/.local/usr/bin$PATH

この表現は正確にはどういう意味ですか?


アイテム間の:は、各セグメントのセパレーターです。これがないと、パスは1回の継続的な実行になり、機能しません。
Terrance、2016年

Ubuntuでは、この種のPATH変更はすでに~/.profileファイルで行われているため、で同様のことを行うのは少し矛盾しています~/.bashrc~/.profile必要に応じて、すでにあるコードを変更するIMOの改善。現在、デフォルト~/.profileのファイルは、この行が含まれていますPATH="$HOME/bin:$HOME/.local/bin:$PATH"
グンナーHjalmarsson

@GunnarHjalmarsson:.profileと.bashrcが異なる状況がいくつかあります。ファイル.profileは、サブシェルではなくログインシェルによって解析されます。しかし、サブシェルを開始するためにとにかくログインする必要があるので、サブシェルは$ PATHを継承するため、これは問題ありません。.bashrcファイルは、ログインシェルでは解析されませんが、サブシェルでは解析されます。違いは、ログインシェルの子ではないものがある場合です(多分git commitフックのような他のスクリプトを呼び出すいくつかの派手な自動化スクリプト)-.profileの内容は読み込まれないため無視されます
slebetman

@slebetman:そうです、そしてデスクトップの場合、あなたが言及しない別の違いがあります:とは異なり~/.bashrc~/.profileはディスプレイマネージャーによって供給されるので~/.profile、グラフィカル環境からプログラムを起動するときにによって設定された変数のみが利用可能です。そしてそれは早い段階で行われるので、セッションの自動起動プロセスには問題ないはずです。
Gunnar Hjalmarsson

回答:


16

この質問で述べたすべてを要約すると、

export一部

このexport行は、宣言した変数が子プロセスからアクセス可能になることを意味しています。つまり、プロセスはexport、シェルの環境を介して、キーワードの後に宣言された変数にアクセスできます。したがって、export FOO="BAR"あなたがシェル環境でのようなことをしてから変更をソースした場合、タイプ$FOOして取得することができますBAR

PATH一部

パス行は、あなたが述べたとおりです。それPATHは、シェル環境にちなんで名付けられた変数を宣言しています。bash環境でPATHは、コンピューターがプログラムを探す場所を定義するという特別な目的があります。これにより、ディレクトリ全体を入力しなくても、スクリプトのカスタムコマンドを入力できます。PATHはデフォルトでエクスポート用にマークされているため、この行を書き換える必要はありません。しかし、害はありません。

$HOMEPATHの変数

PATH変数に割り当てられているパスの先頭で$HOME宣言されています。これは、コンピューターが格納されている値をほぼ完全に取得しHOME、それを読み取るときに残りの行の前にコピーして貼り付けることを意味します。

:両方のパスの間で

これ:は文中のコンマに相当します。3つのディレクトリを分離するだけです。これらの3つのディレクトリがないと、コンソールは受け取ったコマンドを認識しません。これらの3つの場所は、スクリプト/コマンドファイルを格納するために最も一般的に使用される3つのディレクトリであり、ファイルへのフルパスを書き出す必要がなく、ターミナルからアクセスできる必要があります。


正解です。「エクスポート行は、子プロセスにアクセス可能になった後で宣言する変数がこれらの子プロセスの親であることを意味します。コマンドを実行するターミナルから端末を実行しますか?
vadasambar

5

PATH変数は、スクリプトまたはでいくつかの他の実行可能ファイルを持っているのであれば、どこの実行可能プログラムを検索する場所を知っているbashのことができます$HOME/.local/bin修正、PATHあなたが入力し、あなたが行うと同じように、そのファイルを実行できるようになるlsかをdf

exportそのPATH変数をbashから実行する他のプログラムでも利用できるようにすることだけを意味します。

に関しては: 、それは各ディレクトリの単なるセパレータです。それは単語のリストのコンマと同じです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.