sh: команда времени не найдена

5518
Rafael

В тестовом пакете llvm 3.0 фрагмент кода, приведенный ниже, выдает следующую ошибку в bash:

sh: команда времени не найдена

if [ "x$RHOST" = x ] ; then ( sh -c "$ULIMITCMD $TIMEIT -p sh -c '$COMMAND >$OUTFILE 2>&1 < $INFILE; echo exit \$?'" ) 2>&1 \ | awk -- '\ BEGIN { cpu = 0.0; } /^user/ { cpu += $2; print; } !/^user/ { print; } END { printf("program %f\n", cpu); }' > $OUTFILE.time 

где $ TIMEIT = время.

Я попытался изменить "sh -c" на "eval", но ошибка продолжалась.

Пытаясь решить эту ошибку, я заметил кое-что забавное, что может или не может помочь в решении этой проблемы: запуск sh -c "time" работает, но sh -c "time -p" - нет.

Кто-нибудь из вас, ребята, имеет какое-либо представление о том, почему происходит эта ошибка и как я могу ее исправить?

заранее спасибо

3
Проверьте `man time` и посмотрите, нет ли в вашей реализации` time` флага `-p`. Тем не менее, даже если флаг был проблемой, то ошибка должна быть `-p: команда не найдена` не` время не найдено`. Все это говорит, вы уверены, что `sh` вашей системы указывает на` bash`? Если вы работаете в некоторых операционных системах, это может быть `dash`. (Опять же, не уверен, что это помогает, если у `dash` нет встроенного в` time` ** и ** у вас нет отдельной команды `time`.) Telemachus 12 лет назад 0
«` sh: команда времени не найдена` »- это сообщение об ошибке _exact_? Кроме того, какой вывод `readlink -f" $ (which sh) "` генерирует для вас? Daniel Andersson 12 лет назад 0
«Точная» ошибка: sh: time: команда не найдена Rafael 12 лет назад 0
readlink -f "$ (which sh)" выводит / bin / bash Rafael 12 лет назад 0
Проверьте man time и посмотрите, не содержит ли ваша реализация time флаг -p. -> Использование времени -p работает нормально. Проблема в том, когда выполняется вместе с sh -c. eval "time - p" работает хоть и нормально. Но в контексте сценария, который я выполняю, кажется, что он не работает (выдает ошибку, что команда time не была найдена) Rafael 12 лет назад 0

1 ответ на вопрос

4
dAnjou

Чтобы ответить на это здесь: timeэто зарезервированное слово в оболочках. Чтобы использовать фактическую команду, попробуйте command time [options] [command]или /usr/bin/time [options] [command].

Источник: https://askubuntu.com/a/86196

Программа предоставляется пакетом time: `apt-get install time` jonhattan 5 лет назад 0
Если вы используете Gentoo и получаете эту ошибку, вам понадобится `sys-process / time` NuclearPeon 5 лет назад 0