konsole
ターミナルを開くためのスクリプト(起動時に実行)を取得できるようにしたい。
それが開いたとき、それはいくつかの永続的なこと(ディレクトリやソースbashrcの変更など)を実行し、長時間実行されているプログラムを実行することです。
プログラムがクラッシュしたり、入って<ctrl+c>
それは、標準入力からのコマンドの受け入れを開始することです(「up-enter」のように、ずっとインタラクティブであるかのように再試行します)。
私はそれを機能させるために非常に多くのことを試みました(私は現在それをls
に取得し、完了時にインタラクティブに戻そうとしています)。
konsole -e ls
konsole --hold ls
konsole -e /bin/bash -c ls
konsole --hold -e "/bin/bash -c ls"
konsole -e "/bin/bash -i -c ls"
konsole -e /bin/bash -i -c ls
konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"
echo ls > /tmp/konsolebash
konsole -e "/bin/bash -i --rcfile /tmp/konsolebash"
それは引用符と関係がありますか?私はそれらを使用するべきではありません、私は何かを逃れるべきですか?
私はbash
を実行しようとするつもりでしたか?
アイデアが不足していますが、それが実現可能であることを願っています(ただし、私が見逃した恥ずかしいほど単純なものではないことを願っています)。
特にkonsole
が問題である場合は、他のターミナルエミュレータを正常に使用する回答に賛成します(ただし、質問は特にkonsole
に関するものなので、ジューシーなティックを与えることはできないと思います)
@ n.stのコメントのおかげで、私はこれを1つのライナーにしました。
konsole -e /bin/bash --rcfile <(echo "cd /;ls;echo hi | less")
これは、tmpfilesのない短いバージョンであり、以下の代わりにbashプロセス置換を使用します。
echo "cd /;ls;echo hi | less" > /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash
いくつかのコマンドを実行し、それらを表示させ、環境を変更し、長時間実行されるプログラム(less
)を実行し、終了すると(:q
)インタラクティブになります。
したがって、cd /;ls;echo hi | less
(デモンストレーション)をスクリプトに置き換えます。
履歴はありませんが、少なくとも現在は正しいディレクトリにいて、設定したい環境変数があります。
基本的に私の以前の試みと同じです。
konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"
ファイルの書き込みがkonsole
の実行外にあることを除いて、-i
フラグを削除し、実行パラメーターが1つの引用符ブロックに含まれていません
残念ながら、--rcfile
スイッチを使用すると、これらのコマンドに対して~/.bashrc
がロードされないため、エイリアスなどが必要な場合は、これを行う必要があります。
cat ~/.bashrc > /tmp/konsolebash; echo "commands" >> /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash
これはbashrcをコピーするだけです追加コマンドを最後にコピーします