I would like to have a command or script that opens a new gnome-terminal window with bash and loads a history file and stays open.
I searched for how to open a terminal and execute a command without it closing, and the answers I found are essentially summarized in this stackoverflow answer.
Based on these methods, I tried running the following command:
gnome-terminal -e "bash -c 'history -r ~/history.txt; exec $SHELL'"
However, the history that appears in the new window is not the one in history.txt
but the one in the default file, .bash_history
. I thought since after the history -r
command I am executing bash
, and that sources the .bashrc
file, maybe .bashrc
is doing something that affects the history I loaded.
Based on that, I tried the rcfile
option in the answer linked above, so that I can include commands after .bashrc
, resulting in the following rcfile
:
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/history.txt
However, when I run the following command:
gnome-terminal -e "bash --rcfile rcfile"
The history in the new terminal is still the one from .bash_history
. If I add the history
command to the rcfile
it shows that the history from history.txt
was loaded, so something after the rcfile
is overwriting the history I load.
I also found that if I unset the HISTFILE
variable with export HISTFILE=''
at the end of the rcfile
, the history from history.txt
is not overwritten and works. However, I do not want to unset HISTFILE
because I do want the history to be saved to .bash_history
when I use the newly opened terminal.
Finally, I found the -o
option in bash, so I tried doing what I want with that. I changed my rcfile
to:
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/saved/history.txt
set -o history
and ran the following command:
bash --rcfile rcfile.txt +o history
I was hoping that running bash
with +o history
would prevent the history from history.txt
from being overwritten, while the set -o history
command in the rcfile
would reactivate the bash history. However, this also does not work as intended, as the history is the one from history.txt
but then there is no more history logging and I have to manually enter set -o history
for it to work.
So basically, everything I tried brings me back to the same question: how do I open the new terminal with bash and then execute a command, as if a user were entering it?
Additionally, I would like a better understanding of what is happening after the rcfile
is executed, as I wasn't able to find any other relevant file that was being sourced. And is there a way of disabling that behavior from the command line?