Linux setenv bash命令在shell中不工作

Linux setenv bash命令在shell中不工作,linux,bash,Linux,Bash,我试图通过编写bash文件来简化我的工作。 当我在终端中尝试此代码时: env | grep $TMPDIR 它返回: /tmp (我不知道这是在哪里设置的,也找不到将此/tmp路径分配到TMPDIR的代码行。如果有人能告诉我如何找到包含此分配的文件,我也会很高兴) 当我在终端中设置正确的路径时,一切正常,如下所示: export TMPDIR=/My/Path/to/where/I/need 但当我在bash文件中使用相同的代码时,它不起作用: #!/bin/bash setenv TM

我试图通过编写bash文件来简化我的工作。 当我在终端中尝试此代码时:

env | grep $TMPDIR
它返回:

/tmp
(我不知道这是在哪里设置的,也找不到将此
/tmp
路径分配到TMPDIR的代码行。如果有人能告诉我如何找到包含此分配的文件,我也会很高兴)

当我在终端中设置正确的路径时,一切正常,如下所示:

export TMPDIR=/My/Path/to/where/I/need
但当我在bash文件中使用相同的代码时,它不起作用:

#!/bin/bash
setenv TMPDIR /My/Path/to/where/I/need
我也试过这些:

setenv TMPDIR "/My/Path/to/where/I/need"
或:

它们都返回
“/tmp”
以响应
echo$TMPDIR


有什么建议吗?

setenv
仅适用于
csh
。在Bourne shells中使用导出

csh
setenv
不同,在键和值之间需要一个
=

export TMPDIR="/My/Path/to/where/I/need"

setenv
仅用于
csh
。在Bourne shells中使用导出

csh
setenv
不同,在键和值之间需要一个
=

export TMPDIR="/My/Path/to/where/I/need"

我假设您正在尝试运行一个shell脚本,该脚本在调用环境中设置环境变量,如中所示:

$ echo $myvar
old_value
$ ./set_new_value.sh
$ echo $myvar
new_value
首先,您需要使用export,而不是setenv

其次,您需要获取脚本的源代码:

$ cat set_new_value.sh
export myvar='new_value'
$ source ./set_new_value.sh
$ echo $myvar
new_value
您也可以使用。单独:

$ . ./set_new_value.sh
干杯,
Holger

我假设您正在尝试运行一个shell脚本,该脚本在调用环境中设置一个环境变量,如下所示:

$ echo $myvar
old_value
$ ./set_new_value.sh
$ echo $myvar
new_value
首先,您需要使用export,而不是setenv

其次,您需要获取脚本的源代码:

$ cat set_new_value.sh
export myvar='new_value'
$ source ./set_new_value.sh
$ echo $myvar
new_value
您也可以使用。单独:

$ . ./set_new_value.sh
干杯,
霍尔格

setenv
代表C贝壳,海贝最好留在海边。为什么不使用
export
,它在脚本内部的终端中工作?是什么让你认为你需要改变命令?
导出TMPDIR
需要
=
来赋值;不能有名为
/My/Path/…
的变量。在终端上键入的内容是您在脚本中编写的内容-给定或获取别名,这只是避免使用别名的另一个原因。
setenv
用于C shell,而sea shell最好留在海边。为什么不使用
export
,它在脚本内部的终端中工作?是什么让你认为你需要改变命令?
导出TMPDIR
需要
=
来赋值;不能有名为
/My/Path/…
的变量。在终端上键入的内容是在脚本中写入的内容-给定或获取别名,这只是避免使用别名的另一个原因。