2013-03-16 3 views
0

Я пытаюсь использовать инструмент командной строки, который называется ccnd. Я хочу отправить его журнал в файл. Документация инструмента говорит:Переменная окружения и инструмент командной строки

Для начала ccnd отправки вывода в лог-файл вместо терминала, установить переменную окружения CCND_LOG с пути файла, который вы хотите написать. Любой существующий файл с этим именем будет перезаписан.

Так вот что я сделал:

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

Но я все еще вижу выход инструмента командной строки в моем терминале. Как сделать CCND_LOG эффективным для ccnd?

Я использую bash, который, по-видимому, является настройкой по умолчанию для моего терминала Mac OS X.

+0

Вы используете 'tcsh' или' bash' как свою оболочку? По умолчанию Mac OS X использует 'tcsh', который является производной оболочки C. –

+0

@JonathanLeffler Я использую 'bash'. – CherryQu

+0

, используя нижеприведенные решения, создает ли файл журнала (но все же выводит эхо-сигнал на экран)? Удачи. – shellter

ответ

3

Либо:

$ CCND_LOG="./ccnd.log" ccnd 

Или:

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

Первые наборы среда для команды; второй устанавливает среду до тех пор, пока она не будет изменена. Все переменные среды также являются переменными оболочки; не все переменные оболочки являются переменными среды. Пока он не экспортируется, переменная является только переменной оболочки; как только он экспортируется, он становится частью среды.

Если вы используете производную оболочки C (например, tcsh), вам нужно будет использовать команду setenv для создания переменной окружения; первый вариант не является вариантом с оболочкой C.

% setenv CCND_LOG ./ccnd_log 
% ccnd 

Если вы используете Баш, либо из двух первых должны установить среду на время выполнения команды. Используйте обозначение экспорта. Затем запустите env | grep CCND, чтобы проверить, что он установлен.

Я вижу, что CCNx Documentation говорит: программы

Все CCNx требуют, чтобы ccnd работать:

bin/ccndstart 

Для начала ccnd отправки вывода в лог-файл вместо терминала, набор переменная окружения CCND_LOG с указанием пути файла хочу написать. Любой существующий файл с этим именем будет перезаписан.

В список других переменных окружения, которые доступны (управления, включая отладку сообщений) запуска:

bin/ccnd -h 

Обратите внимание, что вы не должны обычно запускать ccnd непосредственно, но использовать ccndstart скрипт ,

(курсив наш.)

Используете ccnd или ccndstart?

+0

К сожалению, никто не работает для меня. Я использую Mac OS X Shell. Будет ли мне сетенв? Я думаю, что переменная среды CCND_LOG уже создана (хотя по умолчанию она пуста). Я вижу его значение с помощью 'echo $ CCND_DEBUG' – CherryQu

+0

Да; по умолчанию 'tcsh' является оболочкой в ​​терминале Mac. Тогда вам понадобится «setenv»; см. мое обновление. –

+0

Хм ... моя раковина - это баш. У него нет 'setenv' ... – CherryQu