如何在cygwin中设置环境变量?

如何在cygwin中设置环境变量?,cygwin,Cygwin,在linux中,我会: setenv -p MYVAR "somevalue" 但这在cygwin中似乎不起作用。默认情况下,cygwin正在运行or,因此设置变量的命令不同。这是您需要的代码: export MYVAR="somevalue" 导出部分让shell知道它是一个环境变量而不是局部变量 如果在主目录中键入ls-a,您应该会看到以下部分或全部文件: .bashrc .bash_profile .profile .bash\u profile针对登录shell执行,而.bashr

在linux中,我会:

setenv -p MYVAR "somevalue"

但这在cygwin中似乎不起作用。

默认情况下,cygwin正在运行or,因此设置变量的命令不同。这是您需要的代码:

export MYVAR="somevalue"
导出部分让shell知道它是一个环境变量而不是局部变量

如果在主目录中键入
ls-a
,您应该会看到以下部分或全部文件:

.bashrc
.bash_profile
.profile
.bash\u profile
针对登录shell执行,而
.bashrc
针对交互式非登录shell执行。要最简单地确保始终设置环境变量,请打开
.bash\u profile
,然后添加文本:

export MYVAR="somevalue"
然后,您的shell在每次启动时执行
.bash\u profile
,并将运行此命令。然后,您将始终可以访问
MYVAR
变量。如果未导出变量,则只能在
.bash\u配置文件中访问该变量

您可以通过将其值打印到shell来检查此变量是否已定义:

echo $MYVAR
您可以使用以下命令删除(取消设置)变量:

unset $MYVAR
shell配置文件简介 另外,关于
.bashrc
.bash\u profile
.profile
的对比,请参见以下答案:

为了简化配置,我建议您从
.bash\u配置文件
中获取
.bashrc
文件。将此添加到
.bash\u配置文件中

if [ -f ${HOME}/.bashrc ]; then
   source ${HOME}/.bashrc
fi
这将从
.bash\u profile
加载
.bashrc

如果执行此操作,则可以在
.bashrc
中插入以下行(如果愿意):

export MYVAR="somevalue"

在cygwin中设置环境变量的最佳方法是创建一个bash概要文件,并在每次登录和运行shell时执行该概要文件

在我的.bash_配置文件中,这是我的设置

JAVA_HOME = C:/Program Files/Java/jdk1.7.0_51
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin

一旦你运行bash,查看echo$JAVA_HOME,您应该会看到作为输出的路径。

请详细说明:您使用的是什么shell?
echo$shell
返回给我/bin/sh-谷歌告诉我这是Bourne shell。好的-我知道了-Bourne shell的VAR=value.setenv在C shell中工作下次启动cygwin时MYVAR还会在吗?@BeeBand我刚刚更新我的回答。如果您只在shell中键入命令,则在退出shell之前,您将一直使用该命令。如果您将它放在配置文件中,那么每次使用shell时都会有它。如果修改配置文件而不重新启动shell,可以键入
~/.bashrc
执行配置文件而不重新启动。@dbmikus-您也可以添加它,您可以像这样访问环境变量的值-
$MYVAR
。要查看变量的值,请键入
echo$MYVAR
。要删除env变量,请使用unset命令<代码>取消设置$MYVAR
谢谢您的建议,@Steam。我把这些都加进去了。我试着让信息从与问题最相关到最不相关。