Почему «history» ничего не выводит в tcsh, когда команды приходят из файла? - PullRequest
1 голос
/ 06 февраля 2012

Когда мы вводим «history» в tcsh, мы можем видеть список команд истории, например:

ubuntu:~> echo a
a
ubuntu:~> history
     1  9:20    echo a
     2  9:20    history

Однако, если мы храним в командах в файле «commands.txt»

echo a
history

И мы перенаправляем содержимое этого файла в tcsh с помощью

tcsh < commands.txt

. Мы можем видеть только:

a

Почему это происходит?И почему приглашение оболочки также не является частью вывода?

Кстати, на самом деле оно работает для bash, вам просто нужно включить опцию history , как этот

set -o history
echo a
history

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Команда history является встроенной в tcsh, поэтому не ведет себя как обычная команда. Согласно статье «Считается, что программирование Csh считается вредным», в разделе 2а написано

Вы не можете собрать [встроенные] разными способами.

И я не уверен, что это даже разумный способ. А сценарии не выводят командные строки.

0 голосов
/ 06 февраля 2012

ну, возможно, это не идеальный ответ на вопрос почему . но, по крайней мере, он дает некоторую информацию, которая не использует команду истории в скрипте.

в http://www.tldp.org/LDP/abs/html/special-chars.html поиск "история" вы найдете:

Обратите внимание, что в скрипте механизм истории отключен.

в http://tldp.org/LDP/abs/html/histcommands.html вы можете найти в конце страницы:

Unfortunately, the Bash history tools find no use in scripting.

#!/bin/bash
# history.sh
# A (vain) attempt to use the 'history' command in a script.

history                      # No output.

var=$(history); echo "$var"  # $var is empty.

# History commands disabled within a script.

bash$ ./history.sh (no output)
...