环境变量&命令行工具

时间:2013-03-16 05:28:40

标签: shell command-line environment-variables

我正在尝试使用名为ccnd的命令行工具。我想将其日志发送到一个文件。该工具的文档说:

  

要开始ccnd发送输出到日志文件而不是终端,   使用您的文件路径设置CCND_LOG环境变量   想写。具有该名称的任何现有文件都将被覆盖。

所以这就是我所做的:

$ CCND_LOG='./ccnd.log'
$ ccnd

但是我仍然在终端中看到命令行工具的输出。如何在ccnd上使CCND_LOG生效?

我正在使用bash,这似乎是我的Mac OS X终端的默认设置。

1 个答案:

答案 0 :(得分:3)

或者:

$ CCND_LOG="./ccnd.log" ccnd

或者:

$ export CCND_LOG="./ccnd.log"
$ ccnd

第一个设置命令的环境;第二个设置环境直到它被更改。所有环境变量也是shell变量;并非所有shell变量都是环境变量。在导出之前,变量只是一个shell变量;一旦它被导出,它就会成为环境的一部分。

如果您使用的是C shell派生(例如tcsh),则必须使用setenv命令创建环境变量;第一个变体不是C shell的选项。

% setenv CCND_LOG ./ccnd_log
% ccnd

如果您正在使用bash,前两个中的任何一个都应该在命令持续时间内设置环境。使用导出表示法。然后运行env | grep CCND以检查它是否已设置。

我看到CCNx Documentation说:

  

所有CCNx计划都要求ccnd正在运行:

bin/ccndstart
     

要开始ccnd发送输出到日志文件而不是终端,   使用您的文件路径设置CCND_LOG环境变量   想写。具有该名称的任何现有文件都将被覆盖。

     

有关可用的其他环境变量的列表   (包括调试消息控件)运行:

bin/ccnd -h
     

请注意,您通常不应直接运行ccnd ,但请使用   ccndstart脚本。

(强调补充。)

您是否正在使用ccndccndstart