シェルスクリプトで〜/ .profileで宣言されている環境変数(配列)にアクセスしてみてください。

シェルスクリプトで〜/ .profileで宣言されている環境変数(配列)にアクセスしてみてください。

私は現在この問題と戦っています。

私はSEに関する以前の記事を読んでおり、変数(または配列)を配置する唯一の合理的な方法は~/.profile。何十もの大きな文字列の配列です。
echo ${myarray[12]}myarray言葉のない値があるので、スクリプトを実行するたびに最初から生成するのではなく、一度だけビルドしたいと思います。

echo "elems = ${#myarray[@]}"しかし、willのような簡単な確認はいつも返品0つまり、配列が不明で空です。

ところで、なぜそうなのか?私は実際に宣言された変数を期待しました。~/.profile 〜するこの環境で実行するシェルスクリプトからも入手できます。 (同じttyから来たにもかかわらず、スクリプト内に値は表示されません。)

ベストアンサー1

配列は環境変数ではないので、環境変数でもありません(そしてできない)は親プロセスの子プロセス(スクリプトなど)によって継承されます。 「スクリプトを実行するたびに[配列]を最初から新しく作成する必要があります。」これがなぜ難しいと思うのかわかりません。あなたが言ったように、値が一定であれば、必要なのはスクリプトの値をメモリに読み込むことだけです。配列を初期化するコードでスクリプトが複雑になるか心配な場合は、別のスクリプトファイルに入れてください。.「または」source"。

「変数(または配列)を入れる唯一の合理的な方法は」という考えをどこで得たのかわかりません~/.profile

おすすめ記事