コマンドやスクリプトが欲しいBashを使用して新しいgnomeターミナルウィンドウを開き、履歴ファイルをロードしてから開きます。。
端末を閉じずに端末を開き、コマンドを実行する方法を検索しましたが、見つかった答えは基本的に次のようになります。このstackoverflowの答え。
これらの方法に基づいて、次のコマンドを実行してみました。
gnome-terminal -e "bash -c 'history -r ~/history.txt; exec $SHELL'"
ただし、新しいウィンドウに表示される履歴はhistory.txt
デフォルトファイルではありません.bash_history
。ソースファイルでhistory -r
実行したコマンドのため、ロードしている履歴に影響を与える操作が行われた可能性があります。bash
.bashrc
.bashrc
rcfile
これに基づいて、後でコマンドを含めることができるように上記の回答のオプションを試しました。.bashrc
結果は次のとおりですrcfile
。
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/history.txt
ただし、次のコマンドを実行するとき:
gnome-terminal -e "bash --rcfile rcfile"
歴史は新しいターミナルにも歴史として残ります.bash_history
。history
コマンドを追加すると、履歴がロードされたとマークされますrcfile
。history.txt
それ以降の内容は、rcfile
私がロードした記録を上書きします。。
私も私が設定されていないHISTFILE
変数export HISTFILE=''
rcfile
最後に記録はhistory.txt
上書きされません。そして動作します。ただし、新しく開いた端末を使用するときにHISTFILE
履歴を保存したいので、設定を解除したくありません。.bash_history
最後に、-o
bashでこのオプションを見つけたので、それを使って目的の操作を実行しました。私はrcfile
次のように変更しました。
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/saved/history.txt
set -o history
そして、次のコマンドを実行してください。
bash --rcfile rcfile.txt +o history
私はbash
withを実行すると+o history
履歴をhistory.txt
上書きするのを防ぎ、set -o history
コマンドを実行するとrcfile
bash履歴が再び有効になることを望みました。ただし、これも期待どおりに機能しません。なぜなら、記録がオリジナルだからですhistory.txt
。ただし、記録がなくなり、機能さset -o history
せるには手動で入力する必要があります。
したがって、基本的に私が試したことはすべて同じ問題に戻ります。Bashを使って新しい端末を開く方法それから注文の実行、ユーザーが入力したように?
また、よりよく理解したいと思います。rcfile
実行後はどうなりますか?、私が受け取っている他の関連ファイルが見つからないからです。そしてコマンドラインでこの動作を無効にする方法はありますか??
答え1
質問に記載されている変数とファイルを使用してPROMPT_COMMAND
解決策を見つけました。rcfile.txt
コマンドを実行できます
gnome-terminal -e "bash --rcfile rcfile.txt"
内容はrcfile.txt
次のとおりです。
FILE=~/.bashrc && test -f $FILE && source $FILE
my_init_func() {
# Insert desired commands here. In my case, history -r history.txt
PROMPT_COMMAND=`echo $1`
eval $PROMPT_COMMAND
unset -f $FUNCNAME
}
PROMPT_COMMAND="my_init_func \'$PROMPT_COMMAND\'"
.bashrc
これは、他の端末設定が維持されるようにデフォルト値(存在する場合)を取得することです。次に、bashで使用される関数が呼び出されたときに一度実行される関数を定義してから、独自の設定を解除してPROMPT_COMMAND
ソースを復元しますPROMPT_COMMAND
。