分页: 1 / 1

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

发表于 : 2011-10-07 21:07
dtczhl

代码: 全选

  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 }
两种运行方法和结果如图
这两者到底有啥区别阿?

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

发表于 : 2011-10-08 19:09
raiden
前者相当于执行脚本, ./test享有TMPDIR变量;
后者第一条命令是对你当前的终端设置环境变量

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

发表于 : 2011-10-14 12:39
ChenFengyuan
在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