Chinaunix

标题: 如何使环境变量手动生效? [打印本页]

作者: naoqingxu    时间: 2015-09-14 16:07
标题: 如何使环境变量手动生效?
本帖最后由 naoqingxu 于 2015-09-14 16:31 编辑

1.script1  会用到这个 setenv 环境变量 ,script1 需要一直运行,不能停止。
2.手动修改 环境变量后 ,不希望马上生效
3.希望 script2 来使 script1 中的 新环境变量生效

看了13问 ,如果通过 source 来执行  script 1 环境变量会立即生效,如果不通过 source, 在script 中写入source  也不能手动控制生效

how to play  ,,
作者: tc1989tc    时间: 2015-09-14 16:38
程序的环境变量 是在运行的时候都有了
通过继承 或者自己export
作者: naoqingxu    时间: 2015-09-14 16:49
回复 2# tc1989tc


我就是setenv 了几个变量


   
作者: Shell_HAT    时间: 2015-09-14 17:10
能否举例说明这个方法和你的实际需求有哪些差距?

# ./script2.sh
ChinaUnix

# cat script1.sh
CU="ChinaUnix"

# cat script2.sh
source script1.sh
echo $CU

作者: waker    时间: 2015-09-14 22:06
script2 kill 一个信号给script1
script1 trap到信号后 source 所需脚本
作者: naoqingxu    时间: 2015-09-15 09:02
回复 4# Shell_HAT
script 1  会 call  我setenv  设置的 一个 变量
我手动修改这个变量 ,但是 不希望 script 1 马上加载到新的变量
希望通过 script 2 让script 1 加载到新的变量值
   
作者: naoqingxu    时间: 2015-09-15 09:05
回复 5# waker
谢谢啊  感觉 trap 的方法 应该可行,,  之前从来没用过trap,百度了一下。。

script 2           kill   sciprt1'PID
script 1  中添加 trap "command"  SIGKILL

这么写  没起作用啊。。  是不是哪里不对 script 1 直接就被kill了

   
作者: naoqingxu    时间: 2015-09-15 09:52
man kill
默认的信号是15
所以我应该 kill   sciprt1'PID  然后script 1  中添加 trap "command" 15?
这样写还是不行。。。。  到底该咋写呢。。。
作者: waker    时间: 2015-09-15 10:20
naoqingxu 发表于 2015-09-15 09:52
man kill
默认的信号是15
所以我应该 kill   sciprt1'PID  然后script 1  中添加 trap "command" 15?


有代码吗?
有结果吗?
空对空?
作者: naoqingxu    时间: 2015-09-15 10:27
#! /bin/csh -f
while 1
tail -1 RULElogtest
sleep 1
trap "echo 'hahahahhah'" TERM
end
trap "echo 'hahahahhah'" TERM



我最开始时把 trap 写在while 外面的 ,后来想想 可能 在循环里 根本没执行 trap ,就terminate 了
后来把trap 写在while 里 ,, 直接就是 command not found 了 。。
man trap 也是没有的 我是 HP UX..
作者: naoqingxu    时间: 2015-09-15 10:58
折腾了半天 我的环境里 就没有trap
作者: naoqingxu    时间: 2015-09-15 10:59
折腾了半天 。。 我的环境里 就没有trap  
总以为 哪里写得不对 。。
没有trap 。。 how to play..



到cygwin 试了一下 果断好了 。。
作者: naoqingxu    时间: 2015-09-16 10:44
回复 9# waker

感谢啊  今天问了问 同事  他说 trap 能在ksh里 运行
我们的环境是默认 csh  


#!/bin/csh -f   

再问一句
script里面 有办法 运行 ksh 的东西 然后再回到 csh 吗?
不行 只能 用ksh 全重写script 。。 虽然不长
   
作者: waker    时间: 2015-09-16 11:58
csh可以试试 onintr
不过csh也不支持函数,好好设计label吧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2