/ / Чому "історія" не виводить нічого в tcsh, коли команди надходять з файлу? - оболонка, tcsh

Чому "історія" не виводить нічого в tcsh, коли команди надходять з файлу? - оболонка, tcsh

Коли ми вводимо "історію" в tcsh, ми можемо побачити список команд історії, як це:

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

Однак, якщо ми зберігаємо в командах у файлі "commands.txt"

echo a
history

І ми перенаправляємо вміст цього файлу в tcsh by

tcsh < commands.txt

Що ми бачимо лише:

a

Чому це відбувається? І чому командний рядок не є частиною виходу або?

До речі, це насправді працює для bash, вам просто потрібно ввімкнути історія варіант, як це

set -o history
echo a
history

Відповіді:

0 для відповіді № 1

добре, можливо, не ідеальна відповідь на питання чому. але принаймні це дає вам певну інформацію, яка не використовує команду історії в сценарії.

в 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)

0 для відповіді № 2

The історія команда є вбудованою tcsh, тому не веде себе як звичайна команда.За "Csh-програмування вважається шкідливим", розділ 2a говорить

Ви не можете поставити [in-ins] разом у багатьох розумних шляхах.

І я не впевнений, що це навіть а розумний шлях І скрипти не друкують командні вказівки.