3番目のことをしようとしているが、間違った構文を使用していると思われます。表示されているようなエラーを引き起こす可能性のある5つの一般的な間違いは次のとおりです。
の代わりにスペースを使用します=
。 export NAME value
間違っている; value
次に、エクスポートする後続の変数の名前として解釈されます。
(これはたまたまexport NAME1 NAME2
である複数の変数をエクスポートするための正しい構文が。)
周りにスペースを置く=
。多くのプログラミング言語では、ほとんどの場合、演算子にスペースを埋め込むことが有効であり、スタイル的にも好まれています。ただし、シェルスクリプト(またはシェルコマンドを発行している他の状況)で変数に値を割り当てる場合、これは許可されません。NAME = value
(export
コマンドなどで)機能しません。を使用する必要がありますNAME=value
。
(export NAME = value
という名前のエクスポート変数しようNAME
、=
とはvalue
。幸い、これはと呼ばれる変数をエクスポートしようとするので、静かに成功したように見えることはありません=
構文エラーである。これとは対照的にexport NAME= value
仕事に表示されますが、割り当てられないvalue
ためにNAME
--instead、それは、空を割り当て長さゼロの文字列をNAME
エクスポートし、変数を個別にエクスポートしますvalue
。どちらもよくある間違いです。)
変数の値の一部をスペースで区切ります。環境変数にはスペースを含めることができますが、実際には環境変数のフィールド区切り文字として使用されることはほとんどありません。単一の変数に意図的に複数のパスが含まれる場合、通常:
はそれらを分離するために使用されます。
変数に割り当てるときにスペースを引用しない。環境変数の値にスペースが含まれることが想定される場合があります。たとえば、実際にスペースを含むディレクトリの名前です。その場合、スペースを引用符で囲む必要があります。
これを行う1つの方法は、それらの前にを付けること\
です。cdコマンドに渡される括弧を保護するにはどうすればよいですか?を参照してください。他の方法で情報を得るためにファイルを削除できません。どちらの質問も環境変数への割り当てに関するものではありませんが、回答に示されている方法が適用されます。
たとえば、環境変数SILLYPATH
を値とともにエクスポートするいくつかの方法を次に示します/home/ek/silly name/bin
。
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
多くの場合、シェルで使用するか、広く使用されている環境変数に割り当てる必要があるフォルダーにスペースが含まれている場合、名前を変更するとメリットが得られる場合があります。(しかし、それは非現実的または望ましくないこともあります。)
何もする必要がないときに変数を割り当てたりエクスポートしたりします。これは一種のメタミスです。特定の技術的な問題は上記のいずれかであることがよくありますが、解決策は問題を修正するのではなく、問題のある行またはその一部を取り除くことです。.bashrc
もちろん、無差別にコードを削除しないでください。しかし、export
誤って追加された可能性があります。または、意図したよりも多くのコードが誤って追加された可能性があります。たとえば、次のように書こうとしているとします。
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
それはに追加され.bashrc
、それを再ソースします。しかし、代わりにあなたが書いたと仮定します:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
次に、export
コマンドはの拡張値をエクスポートするだけでなく、and PATH
という名前の変数をエクスポートしようとしますが、これは望んでいないものです。これらには変数名で禁止されている文字が含まれているため、新しいインタラクティブbashシェルを起動するたびにエラーが発生します。.
/home/your-username/.bashrc
この問題を回避するために、私は編集示唆.bashrc
(例えばエディタでnano ~/.bashrc
、gedit ~/.bashrc
むしろでそれの最後に出力をリダイレクトするよりも)>>
。