获取包含“typeset -r VAR = value”的shell脚本

时间:2011-12-29 19:39:11

标签: linux ksh

修改包含

的脚本A的好方法是什么

"typeset -r VAR=value"

使脚本可重复(同时保持声明)?

目前,有问题的脚本在登录时由用户的.profile点缀,然后再由用户从命令行运行的其他脚本点缀。

原样,脚本将在后续运行时出错,因为VAR已经是只读的。

uname -a: Linux demon 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

问题更新:

如果您通过用户的.profile脚本注释掉脚本A中的点,那么在登录脚本B时,脚本A中的点可以反复运行而没有任何问题。但是,如果您从命令行运行脚本A,则后续调用脚本B会出错。

是什么解释了这种行为?

  • 似乎是因为.profile在系统中最大的shell中运行,而脚本B在临时子shell中运行。

它是如何修复的?

  • 如何更新脚本B,以便在尝试设置VAR的值并使VAR只读之前检查VAR的只读和值?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

test -z "${VAR+set}" && typeset -r VAR=value