ドット(.)を含む変数のエクスポート

ドット(.)を含む変数のエクスポート

ポイントを含む変数をエクスポートする方法次の操作を試みると、「無効な変数名」というメッセージが表示されます。

 export my.home=/tmp/someDir
-ksh: my.home=/tmp/someDir: invalid variable name

メタ文字ドット(.)をエスケープしても役に立ちません。

$ export my\.home=/tmp/someDir
export: my.home=/tmp/someDir: is not an identifier

ベストアンサー1

少なくともbashマニュアルページの場合、エクスポート構文は次のように定義されます。

export [-fn] [name[=word]] ...

また、「名前」を次のように定義します。

   name   A  word  consisting  only  of alphanumeric characters and under‐
          scores, and beginning with an alphabetic character or an  under‐
          score.  Also referred to as an identifier.

my.homeしたがって、有効な識別子ではないため、実際に変数を定義することはできません。

私はあなたのkshが非常に似た識別子定義を持っているので、そのような変数も許可しないと確信しています。 (マンページを見てください。)

また、識別子(および変数名)の資格を指定する一種の汎用標準(POSIX?)があると確信しています。


何らかの理由でこの種の変数が本当に必要な場合は、次のようなものを使用できます。

env "my.home=/tmp/someDir" bash

とにかく定義しなさい。ただし、今回も一般的なシェル構文を使用してアクセスすることはできません。この場合、Perl などの他の言語が必要な場合があります。

perl -e 'print $ENV{"my.home"}'

例えば

env "my.home=/tmp/someDir" perl -le 'print $ENV{"my.home"}'

パスを印刷する必要があります。

おすすめ記事