echo a a ubuntu:~> history 1 9:20 echo a 2 9:20 history しかし、 "commands.txt"ファイルにコマンドを格納すると、 echo a history そして、このファイルの内容をtcshにリダイレクトします。 tcsh <"> echo a a ubuntu:~> history 1 9:20 echo a 2 9:20 history しかし、 "commands.txt"ファイルにコマンドを格納すると、 echo a history そして、このファイルの内容をtcshにリダイレクトします。 tcsh <"> echo a a ubuntu:~> history 1 9:20 echo a 2 9:20 history しかし、 "commands.txt"ファイルにコマンドを格納すると、 echo a history そして、このファイルの内容をtcshにリダイレクトします。 tcsh <" />

コマンドがファイルから来たときに 'history'がtcshに何も出力しないのはなぜですか?

tcshに "history"と入力すると、履歴コマンドのリストが次のように表示されます。

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で動作しますが、このような履歴オプションをオンにするだけです

set -o history
echo a
history
1

2 答え

history コマンドはtcshに組み込まれているので、通常のコマンドのようには動作しません。 「Csh Programming有害なものとみなされる」暴言によって、セクション2aによれば

    

[組み込み]を合理的な方法で組み合わせることはできません。

  

そして私はその合理的方法でさえも確信していません。スクリプトはコマンドプロンプトを表示しません。

0
追加された

理由に関する完全な答えではないかもしれません。少なくとも、スクリプトで履歴コマンドを使用しないいくつかの情報を提供します。

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
追加された
私はそれが実際にbashのために働くと思う、私の編集を参照してください。
追加された 著者 ablmf,