求教,两种设置环境变量有什么区别阿?

软件和网站开发以及相关技术探讨
回复
头像
dtczhl
帖子: 70
注册时间: 2011-04-17 11:44

求教,两种设置环境变量有什么区别阿?

#1

帖子 dtczhl » 2011-10-07 21:07

代码: 全选

  1 #include "apue.h"
  2 
  3 
  4 int
  5 main(int argc,char *argv[])
  6 {
  7     printf("%s\n",tempnam(argv[1][0] != ' '? argv[1]:NULL,
  8                           argv[2][0] != ' '? argv[2]:NULL));
  9 
 10     exit(0);
 11 }
两种运行方法和结果如图
这两者到底有啥区别阿?
附件
Screenshot.png
头像
raiden
帖子: 42
注册时间: 2009-03-09 12:00
联系:

Re: 求教,两种设置环境变量有什么区别阿?

#2

帖子 raiden » 2011-10-08 19:09

前者相当于执行脚本, ./test享有TMPDIR变量;
后者第一条命令是对你当前的终端设置环境变量
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 求教,两种设置环境变量有什么区别阿?

#3

帖子 ChenFengyuan » 2011-10-14 12:39

在bash里面要设置环境变量需要export或者foo=abc ./bar.
直接赋值没有环境变量的效果.

代码: 全选

$ cat b.c
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        printf("%s\n",getenv("abc")?:"NULL");
        return 0;
}
$ gcc b.c
$ ./a.out
NULL
$ abc=1 ./a.out
1
$ abc=2
$ ./a.out
NULL
$ export abc
$ ./a.out
2
common lisp版本,用的clozure common lisp

代码: 全选

$ foo=1 ccl -e '(princ (ccl::getenv "foo"))' -b -Q < /dev/null
1
$ foo=3
$ ccl -e '(princ (ccl::getenv "foo"))' -b -Q < /dev/null      
NIL
$ export foo
$ ccl -e '(princ (ccl::getenv "foo"))' -b -Q < /dev/null
3
回复