bashの$ {GZIP_BINDIR-'/ bin'}の意味は何ですか?


回答:


19

${GZIP_BINDIR-'/bin'}あるbashパラメータ展開パターンが。からman bash

${parameter:-word}
              Use Default Values.  If parameter is unset or null, 
the expansion of word is substituted.  Otherwise, the  value  of parameter
is substituted.

この部分の直前に、manページには(通知する@jwodderに感謝します):

Omitting the colon results in a test only for a parameter that is unset.

マンページにあるように、変数のデフォルト値を設定しますGZIP_BINDIR。場合GZIP_BINDIR(あなたが使用していないとしてnull以外の予め設定された値がある:その値が使用されますが)、それ以外の/bin変数の値として使用されますGZIP_BINDIR

一方、null値もテストする場合は、次のパターンを使用します(include :):

${GZIP_BINDIR:-'/bin'}

その後、$PATH前に保持していた値に拡張されます。したがって、PATH以前に持っていた場合:

/usr/sbin:/usr/bin

今、あなたPATHはそうなります(考慮されGZIP_BINDIRていません):

/bin:/usr/sbin:/usr/bin

export PATHこれはPATH、すべての子プロセスで利用可能になります。


私はあなたが見逃していると思う:${GZIP_BINDIR-'/bin'}必ずしもそうではありません」。${parameter-word}も有効ですが、マニュアルページにはないようです。
nyuszika7h

@ nyuszika7hうん..iはそれを前に知りませんでした..奇妙な理由はマンページに含まれていません
..-heemayl

私のコンピュータ上のbashのmanページでは、上のセクション上の段落の権利は:-言う:「サブストリング拡張を行っていない場合は、未設定またはヌルのパラメータ(例えば、:-)、bashのテストの下に文書化フォームを使用。 コロンを省略します設定されていないパラメーターのみのテストになります。 "
-jwodder

サイドノートとして、あなたはの設定組み合わせることができますPATHし、export次のように単一のコマンドにexport PATH="${GZIP_BINDIR-'/bin'}:$PATH"
水田ランダウ

8

パラメータ展開内のハイフンの前に実際にコロンはありません${GZIP_BINDIR-'/bin'}か?

この種のコンストラクトはほとんどの場合、コロンで記述されます${GZIP_BINDIR:-'/bin'}。つまり、「$ GZIP_BINDIRがNULLまたは未設定の場合、 '/ bin'に設定する」という意味です。

ただし、指定した構文有効ですが、まれです。${GZIP_BINDIR-'/bin'}(コロンなし)は、「$ GZIP_BINDIRが設定されていない場合、「/ bin」に設定する」ことを意味します。設定されている(宣言されている)が、何も割り当てられていない場合(例:NULL)、何も挿入されません。

コロンとしてても、ここでバグがあるかもしれません、次の変数の構築物(...} :$ PATHが...)します $ GZIP_BINDIRはセットが、NULLである場合は、まだ挿入されて。これにより、$ PATHの先頭にコロンが追加されるため、現在のディレクトリが最初に検索されます。

ほとんどの場合、現在のディレクトリに置くだけで、標準コマンドと同じ名前の悪意のあるプログラムを実行しやすくするため、セキュリティの問題と見なされます。

$ GZIP_BINDIRが設定されているがNULL(空)の場合に$ PATHを変更しないままにするには、正しい構文は次のようになります。 ${GZIP_BINDIR-'/bin:'}$PATH; export PATH

$ GZIP_BINDIRが設定されていないか、設定されているがNULLである場合に$ PATHを変更しないままにするには、正しい構文は次のようになります。 ${GZIP_BINDIR:-'/bin:'}$PATH; export PATH


2

このコマンドは、PATH変数を更新します。

PATH実行可能プログラムが置かれているディレクトリのセットを指定する環境変数です。

PATH="${GZIP_BINDIR-'/bin'}:$PATH";

これGZIP_BINDIRは、前のPATHに終了する場合は別の変数の値を追加し、そうでない場合は代わりに/ binを使用してPATHに追加

export PATH

輸出は、読む、すべての子プロセスおよびサブシェルのために利用可能PATHを設定するために使用され、これを詳細については、

これは静的ではなく、シェルを終了すると失われることに注意してください。

このPATH編集を永続的にするには、これらの行を追加する必要があります .bashrc

gedit .bashrc

そして、行を追加します

export PATH="${GZIP_BINDIR-'/bin'}:$PATH"

その後、コマンドを実行します

source .bashrc

GZIP_BINDIRは変数です
Maythux

正しくないものは何ですか?いいえ、しませんでしたか?鉱山もdownvotedされる
Maythux

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