在Mac上有没有类似于setenv的命令?

18

我希望使用setenv设置一个环境变量:

setenv NODE_ENV localhost  

但是使用setenv命令会提示错误,说找不到该命令。有谁知道如何在MAC OSX上执行相当于setenv的命令吗?谢谢!


Node.js与您的问题有何关联? - Keith Thompson
@KeithThompson - 显然这个问题与node无关(当然他是为了让node工作而这样做,但问题的答案与node无关);OP想要设置一个环境变量,而node只是一个例子。我将编辑这个问题。 - Howiecamp
@Howiecamp:OP使用了“node.js”标签。问题看起来确实不像是关于node.js的,但据我所知可能有一些我没有注意到的联系。预期的答案是它与node.js无关,但我希望OP能够回复。 - Keith Thompson
3个回答

35

您想要 导出

NODE_ENV=localhost
export NODE_ENV

或者在一行上使用以下命令:export NODE_ENV=localhost。这与OSX本身无关,更多地与bash和(t)csh作为您的shell有关。

8

launchctl 有什么相关性? - Keith Thompson
所以你不必重新启动。请参见:https://dev59.com/UXE85IYBdhLWcg3w_Itr 你是Mac的拥有者吗?这是常见的做法。 - German
更多参考资料:http://codepulsive.blogspot.com.es/2013/11/setting-environment-variables-in-os-x.html http://apple.stackexchange.com/questions/51677/how-to-set-path-for-finder-launched-applications - German
嗯。我认为这个问题是关于tcsh与bash的(其他答案的作者也做出了同样的假设),但显然它还涉及到我不熟悉的node.js。尽管如此,我认为OP所询问的setenv命令是[t]csh中的内置命令。在bash中,export NODE_ENV=localhost与在[t]csh中的setenv NODE_ENV localhost完全等效。OP似乎并没有问如何使设置持久化;那将是一个单独的问题。node.js和launchctl之间有明显的联系吗? - Keith Thompson
好的,很公平,但由于作者没有提到shell的差异,我没有意识到这一点。不,Node.js和launchctl之间根本没有任何联系。 - German
2
@KeithThompson - 我不确定为什么你一直在强调这个关于相关性和与node的关系的问题。我怀疑你知道node.js和launchctl之间没有明显的联系。Node js只是一个例子。这个变量本来可以叫做NOT_NODE;它只是一个名字。 - Howiecamp

0

你是Cshell用户吗?

早期版本的OS X默认使用tcsh作为shell,因为OS X基于BSD。然而,Mac OS X现在使用BASH作为用户的默认shell。

Mac仍然附带Turbo Csh,如果您想要将其设置为默认shell,可以在终端中输入以下命令:

$ chsh -s /bin/tcsh

如果您决定想要切换回BASH:
$ chsh -s /bin/bash

您可以在/etc/shell文件中查看所有可能的shell列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接