2012-04-02 18 views
0

シェルスクリプト内でコマンド履歴を取得しようとしています。 #!/ bin/bashを取り除かないとうまくいきません。シェルスクリプト内の履歴コマンドを使用

#!/ bin/bashを削除せずに同じ効果を達成するための手掛かりはありますか?

#!/ bin/bashを削除する理由は誰か分かりますか?

+2

あなたがこれまで行ってきたことを私たちに示すことから始めることができます。興味深いのは –

答えて

5

シバンラインを取り出すとき、それはあなたの現在のシェルによって実行されています。あなたが "対話型"シェルを使用していない限り、Bashは報告する履歴はありません。

bashが対話型シェルを起動するようになります
#!/bin/bash -i 

:へのあなたのシェバング行を変更してみてください。

+0

です。私のソリューションは、sourceコマンドを使用してスクリプトを実行することになりました。 #!/ bin/bash -iとソースからスクリプトを実行することの違いは何ですか? – MVTC

+0

@MVTCplusplusスクリプトをソースするときは、現在のシェルのコンテキストで実行されます。割り当てられた/変更された変数や関数などは、実行したシェルで表示されます(historyコマンドを使用してシェルの履歴を変更した場合など)。新しいインタラクティブシェルを起動すると、それらの変更はスクリプトを実行しているシェルのローカルに留まります。あなたが望むものは、あなたのスクリプトが何をすべきかによって異なります。しかし、スクリプトのソースは合理的な解決策でもあります。 – FatalError

関連する問題