bash -c
終了するのではなく、シェルプロンプトをどのように維持できますか?
答え1
インタラクティブモードにしたいが、あらかじめいくつかのスクリプトを実行している場合。または、スクリプトを実行して対話モードを維持します。もしそうなら、鍵--init-file
はあなたのためです。
あなたが持っていると仮定hello.sh
#!/bin/bash
echo "Hello"
export PS1=subshell@
する
$ bash --init-file hello.sh
Hello
subshell@
答え2
expect
別のアプローチは、すでに複数の言語で実装されているアプローチを使用することです。 RAW TCLでは、次のものを使用できます。
#!/usr/bin/env expect
# run the shell
spawn -noecho bash
# blindly send the input in. another way would be to "expect" on the
# prompt, but that's more complicated
send -- "echo foo\n"
send -- "echo bar\n"
# turn interaction with the program over to the user
interact
欠点にはexpect
プロセス遅延が含まれ、利点には、初期コマンドリスト機能がサポートされているかどうかに関係なく、すべてのプログラムに適用されるという利点があります。