ユーザーインタラクティブシェルを起動する実行可能ファイルがあります。シェルの起動時に、最初にいくつかのコマンドを挿入してから、ユーザーにインタラクティブセッションを許可します。これはecho
を使用して簡単に実行できます。
echo "command 1\ncommand 2\ncommand3" | ./Shell_executable
これはほぼで機能します。問題は、プロセスの標準入力を提供しているechoコマンドがEOF一度、コマンドのエコーを完了すると、このEOF=がシェルを終了させることです。シェルでCtrl + Dを押した場合)。
後でEOFを引き起こさずにこれらのコマンドをstdinに挿入する方法はありますか?
stackoverflow の同様の質問でこの賢い答えを見つけました
(echo -e "cmd 1\ncmd 2" && cat) | ./Shell_executable
これでうまくいきます。 cat
は、echo
の出力をShell_executableの入力ストリームに送り込み、EOFになるまでさらに入力を待ちます。
これを行う最もクリーンな方法は、おそらくbash
の--rcfile
オプションのようなものを探すことです。カスタムコマンドをカスタムファイルに入れ、それをインタラクティブシェルに渡して起動時に実行します。
そのようなオプションが存在しない場合は、以下を試すこともできます。
cat custom_commands_file - | ./Shell_executable
cat
は-
をstdinとして解釈します。