【问题标题】:Where are Ksh User-Defined Variables stored on UNIX machine?Ksh 用户定义变量存储在 UNIX 机器上的什么位置?
【发布时间】:2015-09-12 08:25:21
【问题描述】:

KornShell (ksh) 用户定义变量 (UDV) 存储在 AIX(高级交互式执行)机器上的什么位置?

示例命令:

@:/dir #variable=fooValue
@:/dir #echo $variable
fooValue

那么在 AIX 服务器上是否有文本中包含“fooValue”的文件?值是否存储在内存中?无论如何都能嗅出变量吗?

【问题讨论】:

  • 变量保存在 shell 的 RAM 中,而不是文件系统中。
  • @MarkSetchell 您是否有说明这一点的参考资料(例如 URL)。如果是这样,那么这就是我正在寻找的答案。
  • 不,我没有。 AFAIK 这就是所有 Unix shell 的工作方式。

标签: variables unix memory ksh


【解决方案1】:

shell 是一个正在运行的进程,它有自己的一小块内存,由操作系统处理。

当您定义和设置变量时,shell 会存储它们的名称和值 在它自己的进程内存中。

当 shell 进程退出时,该内存被释放回操作系统,变量及其值都将丢失。

【讨论】:

    【解决方案2】:

    它肯定不会存储在磁盘上。您可以使用

    访问存储变量的内存区域
    extern char** environ; 
    

    man 5 environ

    但不那么高级的方式是通过

    char * getenv(char * varname)
    

    返回单个环境变量的值(应该是environ 指针列表的一部分)参见man 3 getenv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-07
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 2023-03-07
      • 2014-05-08
      相关资源
      最近更新 更多