尝试从 shell 脚本访问 ~/.profile 中声明的环境变量(数组)

尝试从 shell 脚本访问 ~/.profile 中声明的环境变量(数组)

我目前正在与这个问题作斗争。

我已经在 SE 上阅读了一些较旧的帖子,并得出结论,放置变量(甚至数组)的唯一明智的方法是~/.profile.
好吧,数组显示出来了,简单的事情比如echo ${myarray[12]}工作正常,但是,只能在控制台上。 myarray是一个很大的字符串数组,有几十个持续的值,我想构建一次,而不是每次运行脚本时从头开始创建。

echo "elems = ${#myarray[@]}"但是,像will这样的简单检查总是返回0,即数组未知且为空。

但为什么会这样呢?我实际上期望在中声明的变量~/.profile 将要也可以从我在此环境中启动的 shell 脚本中获取。 (即使来自同一个 tty,它也不会显示我的脚本内的值。)

答案1

数组不是环境变量,因此也不是(并且不可能是)由子进程(例如脚本)从其父进程继承。您必须“每次运行脚本时从头开始创建[您的数组]。”我不明白为什么你认为这是一个困难。如果这些值是恒定的,正如您所说,那么所需要做的就是将这些值从脚本读入内存。如果您担心初始化数组的代码会使您的脚本变得混乱,请将其放入单独的脚本文件中并使用“.“ 或者 ” source”。

我不知道你从哪里得到“放置变量(甚至数组)的唯一明智的方法是~/.profile”的想法。

相关内容