Risposte:
Il historybuilt-in bashconsente di specificare i nomi dei file quando utilizzato con i -anrwflag e la -adescrizione dei flag dagli help historystati:
aggiungere le righe della cronologia da questa sessione al file della cronologia
Pertanto, possiamo fare:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Per la cronaca, -w(la cronologia di scrittura nel file opion) scrive l' intera cronologia nel file specificato, quindi -a(append) qui è la scelta preferita.
Ci sono altri modi manuali. In particolare kshnon ha -asegnala come bashfa, ma cosa ksh e mkshhanno è HISTFILEvariabile d'ambiente (e bashha anche quello, perché bashincluso un sacco di kshfunzioni); a proposito, questa variabile di default non è impostata (almeno mkshsu Ubuntu non l'ha impostata). Quindi, per l'output della sessione corrente su un altro file, chiamiamo HISTFILEanteposto al comando che nella sintassi della shell significa eseguire il comando con la variabile d'ambiente aggiuntiva specificata. Così:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Ciò che puoi anche vedere da questo è che kshe le sue shell correlate generano la cronologia con caratteri speciali, invece del testo normale bash. Quindi, potresti voler aprire quel file con ksh.
Per quanto riguarda la shell POSIX /bin/shsu Ubuntu , che è Debian Almquist Shell o Dash, esiste già fcintegrata . Tuttavia, su Ubuntu il trattino è compilato senza lib-edit , che è una scelta consapevole da parte degli sviluppatori Ubuntu per motivi di prestazioni, quindi fce altre modalità che richiedono l'editing di linea non funzionano immediatamente (a meno che non si ricompili dashe si installi lib-edit).
I modi neutri della shell sarebbero di registrare la sessione con strumenti esistenti o scrivere la propria funzione per registrare in base al comando.