Come avere una cronologia dei comandi separata per sessioni diverse per lo stesso utente?


8

Devo affrontare questo problema su alcuni server Unix. Quando apro una sessione diversa per lo stesso utente, la cronologia dei comandi viene condivisa da tutta la sessione. Questo crea problemi se per errore premo Ctrl-Po up arrowe semplicemente premo Invio. In un'occasione ho finito per correre per rm -rf *fortuna ero nella directory in cui non ho i permessi per rimuovere i file.

Come avere una cronologia dei comandi separata per sessioni diverse per lo stesso utente? Il più delle volte sto usando ksh e tcsh shell.

Risposte:


8

Dalla domanda ksh :

Q1. Come posso ottenere file cronologici separati per la shell?

A1. ksh usa un file di cronologia condiviso per tutte le shell che usano lo stesso nome di file di cronologia. Ciò significa che i comandi immessi in una finestra verranno visualizzati dalle shell in altre finestre. Per ottenere finestre separate, la variabile HISTFILE deve essere impostata su un nome diverso prima di creare il primo comando di cronologia.


11

Puoi aggiungere HISTFILE=~/.hist$$al tuo .profile. Ciò dovrebbe generare un file univoco per sessione.

Ti ritroverai con un gran numero di .hist*quindi ti suggerisco di rimuoverli di tanto in tanto.


2

Presumo che tu stia parlando di sessioni simultanee; separare le sessioni che si susseguono non è molto utile: non si sarebbe più in grado di utilizzare la sua cronologia, poiché tutte le sessioni sarebbero uniche. Se così fosse, probabilmente staresti meglio disabilitando la cronologia dei comandi.

Se stiamo parlando di separare la sessione simultanea, ti consiglio di usare Bash. Sono abbastanza sicuro di non ottenere la cronologia dei comandi da due sessioni simultanee mescolate con essa. Bash scrive la cronologia solo .bash_historyal logout, quindi la cronologia dei comandi non verrà mescolata fino a dopo il logout. Se l'uso di Bash è accettabile, ciò risolverebbe il tuo problema?


grazie per la tua risposta. Sto lavorando su HP-UX e non è installato bash e non ho il permesso di installarlo :(.
Hemant

1

Aggiungerò qualcosa alla risposta di Gert.

di Gert

Puoi aggiungere HISTFILE = ~ / .hist $$ al tuo .profile. Ciò dovrebbe generare un file univoco per sessione.

Il mio

È possibile rimuovere automaticamente questi file aggiungendo quanto segue.

trap 'rm ${HISTFILE}' exit


2
Sii un po 'avveduto sulle trappole di uscita - la shell non le impila come potresti sperare - quindi ogni ulteriore impostazione di una trappola di uscita sovrascriverà tutte le precedenti. Ho scritto un impilatore per trappole, ma ha quasi fatto esplodere ogni miccia mentale che avevo.
David Collier,

-1

Non riesco a installare lo schermo. non è nemmeno compilando sul mio server.
Hemant,

Non sono sicuro di come lo schermo ti darebbe comunque questa possibilità
Michael Mrozek

@Michael puoi avere diverse sessioni con schermo e lo schermo ha la sua storia. Non so che qualcuno mi abbia detto di risolvere il mio problema con lo schermo ... Non mi piaceva lo schermo. zoppo che questo è stato downmodded quando la mia seconda risposta è essenzialmente la stessa delle altre che sono state alzate. @Hemant ... e avrei dovuto saperlo? Non uso lo schermo per fare questo sul mio sistema. So solo che consente un effetto simile fatto bene.
xenoterracide,

Penso di sapere cosa stai descrivendo, ma non è una funzionalità dello schermo, è solo un effetto collaterale del modo in cui funzionano le shell. Se si aprono due shell, i comandi digitati in uno non verranno visualizzati nella cronologia dell'altro a meno che la shell non lo supporti specificamente (ad esempio, ZSH lo fa, ma è necessario abilitarlo esplicitamente). Non mantiene storie separate, entrambi scrivono nel file di cronologia principale, non puoi vedere le modifiche da ogni shell perché in genere le shell non controllano le modifiche al file di cronologia una volta caricate
Michael Mrozek

@MichaelMrozek La shell korn ha una cronologia condivisa per tutte le finestre, questa non può essere disabilitata. L'uso screennon aiuterà affatto.
FUZxxl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.