環境変数を設定した後に「有効な識別子ではない」エラーを修正する方法は?


12

Ubuntu 14.04 LTSでcocos2dxをセットアップしようとしていますが、環境変数を設定した後(.bashrc)、このエラーが発生し始めます:

bash: export: dev/cocos2d-x-3.2/tools/cocos2d-console/bin': not a valid identifier 
bash: export:/home/john/android': not a valid identifier 
bash: export: dev/android-ndk-r10b': not a valid identifier 
bash: export:dev/adt-bundle-linux-x86_64-20140702/sdk': not a valid identifier

そして、私はそれを修正するために何をすべきかわかりません。


1
変数の設定方法を正確に示す必要があります。
グレンジャックマン14

回答:


16

しかし、環境変数を設定した後

あなたはそれを正しくしなかったようです。

表示されるエラーは、パス(など/home/john/android)が変数に割り当てられたとしてではなく、変数の名前として使用されていることを意味します。

  • 変数を割り当てるための正しい構文はNAME=valueです。
  • 変数をエクスポートするための正しい構文(値がある場合は、既に割り当てられています)はexport NAMEです。
  • (割り当てられた値を持つ)変数を同時に割り当ててエクスポートするための正しい構文はexport NAME=valueです。

3番目のことをしようとしているが、間違った構文を使用していると思われます。表示されているようなエラーを引き起こす可能性のある5つの一般的な間違いは次のとおりです。

  1. の代わりにスペースを使用します= export NAME value間違っている; value次に、エクスポートする後続の変数の名前として解釈されます。

    (これはたまたまexport NAME1 NAME2 である複数の変数をエクスポートするための正しい構文が。)

  2. 周りにスペースを置く=多くのプログラミング言語では、ほとんどの場合、演算子にスペースを埋め込むことが有効であり、スタイル的にも好まれています。ただし、シェルスクリプト(またはシェルコマンドを発行している他の状況)で変数に値を割り当てる場合、これは許可されません。NAME = valueexportコマンドなどで)機能しません。を使用する必要がありますNAME=value

    export NAME = valueという名前のエクスポート変数しようNAME=とはvalue。幸い、これはと呼ばれる変数をエクスポートしようとするので、静かに成功したように見えることはありません=構文エラーである。これとは対照的にexport NAME= value仕事に表示されますが、割り当てられないvalueためにNAME--instead、それは、空を割り当て長さゼロの文字列をNAMEエクスポートし、変数を個別にエクスポートしますvalue。どちらもよくある間違いです。)

  3. 変数の値の一部をスペースで区切ります。環境変数にはスペース含めることができますが、実際には環境変数のフィールド区切り文字として使用されることはほとんどありません。単一の変数に意図的に複数のパスが含まれる場合、通常:はそれらを分離するために使用されます。

  4. 変数に割り当てるときにスペースを引用しない。環境変数の値にスペースが含まれることが想定される場合があります。たとえば、実際にスペースを含むディレクトリの名前です。その場合、スペースを引用符で囲む必要があります。

    これを行う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"

    多くの場合、シェルで使用するか、広く使用されている環境変数に割り当てる必要があるフォルダーにスペースが含まれている場合、名前を変更するとメリットが得られる場合があります。(しかし、それは非現実的または望ましくないこともあります。)

  5. 何もする必要がないときに変数を割り当てたりエクスポートしたりします。これは一種のメタミスです。特定の技術的な問題は上記のいずれかであることがよくありますが、解決策は問題を修正するのではなく、問題のある行またはその一部を取り除くことです。.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 ~/.bashrcgedit ~/.bashrcむしろでそれの最後に出力をリダイレクトするよりも)>>

これは、.bashrcファイル内のバグを見つけて修正するのに十分な情報であると思われます。さらに支援が必要な場合は、分析のためにそのファイルの全内容を投稿する必要があります。(偶然、あなたの問題がたまたま十分に頻繁に発生し、このような一般的な答えを可能にするために十分に透過的なエラーメッセージが発生したことです。)


2
ありがとうございました!そのような詳細な答え。私の場合、=の周りにスペースを置くことが問題でした。私はしばらくこれに苦労していました。
レンガス

5

実行していることを確認してください。

export ENV_VARIABLE

のではなく:

export $ENV_VARIABLE

そうでない場合、変数自体ではなく変数の値をエクスポートしようとしているため、このエラーが発生します。


1

スペース とドル記号を削除しますたとえば、これはSSH経由でWebサーバーにdjango設定モジュールを設定する方法とまったく同じように機能します。

export DJANGO_SETTINGS_MODULE=myapp.settings

0

(Webから)逆コンマを使用して何かをコピーし、環境またはbashrcファイルを更新すると、この問題が頻繁に発生するのを見てきました。

開始する適切な場所は、貼り付けられたコンテンツに逆コンマを手動で入力することです。

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