Não tenho 100% de certeza de que entendi exatamente o que você está pedindo, e (infelizmente) não tenho acesso a um sistema com bash no momento, mas talvez o seguinte ajude você. Coloque isso no final do seu .bashrc :
if [ -f ~/.bash_initial_command ]
then
. ~/.bash_initial_command
rm ~/.bash_initial_command
fi
(onde .bash_initial_command é um nome de arquivo arbitrário; escolha um diferente se quiser) e, em seguida, escreva um script que faça isso:
(echo "history –s '$@'"; echo "$@") > ~/.bash_initial_command
Ou seja, isso coloca o comando (que é apresentado ao script acima como argumento (s)) em um local onde o próximo bash interativo para iniciar o encontrará e o executará. (Por exemplo, se você executar set_up_cmd ls –l , seu próximo bash executará ls –l .) history –s colocará um comando no histórico sem executá-lo.
Observação: Eu não sei se isso funcionará em .bashrc .
Isso precisará de mais refinamento se você quiser usar comandos com aspas (isto é, caracteres especiais citados) ou redirecionamento ( < ou > ); ou comandos compostos (ou seja, contendo ; , | , && ou || ).
Um problema menor: se você Ctrl + C o comando, isso provavelmente terminará o processamento .bashrc e assim evitará que o arquivo .bash_initial_command seja apagado. Você provavelmente pode lidar com isso fazendo
if [ -f ~/.bash_initial_command ]
then
mv ~/.bash_initial_command ~/.bash_initial_command.$$
trap "rm -f ~/.bash_initial_command.$$" 0
. ~/.bash_initial_command.$$
rm -f ~/.bash_initial_command.$$
fi
Isso dá a .bash_initial_command um nome único, para evitar colisões, e faz com que ele seja excluído quando o shell sair.
Se você precisar ativar vários deles simultaneamente, considere a criação do nome "tty" $(basename $(tty)) no nome do arquivo .bash_initial_command .
Claro, isso torna ainda mais importante ter certeza de que seu diretório pessoal não pode ser escrito por ninguém além de você mesmo.