Bagaimana cara memisahkan riwayat perintah untuk sesi berbeda untuk pengguna yang sama?

8

Saya menghadapi masalah ini di beberapa server Unix. Ketika saya membuka sesi berbeda untuk pengguna yang sama, riwayat perintah dibagikan oleh semua sesi. Ini menciptakan masalah jika secara tidak sengaja saya tekan Ctrl-Patau up arrowdan tekan Enter. Pada satu kesempatan saya akhirnya berjalan rm -rf *syukur saya berada di direktori di mana saya tidak memiliki izin untuk menghapus file.

Bagaimana cara memisahkan riwayat perintah untuk sesi berbeda untuk pengguna yang sama? Sebagian besar waktu saya menggunakan kerang ksh dan tcsh.

Hemant
sumber

Jawaban:

8

Dari faq ksh :

Q1. Bagaimana cara saya mendapatkan file histori terpisah untuk shell?

A1. ksh menggunakan file histori bersama untuk semua shell yang menggunakan nama file histori yang sama. Ini berarti bahwa perintah yang dimasukkan dalam satu jendela akan terlihat oleh shell di jendela lain. Untuk mendapatkan jendela yang terpisah, variabel HISTFILE perlu disetel ke nama yang berbeda sebelum perintah sejarah pertama dibuat.

theecereceive
sumber
11

Anda dapat menambahkan HISTFILE=~/.hist$$ke .profile. Ini harus menghasilkan file unik per sesi.

Anda akan mendapatkan banyak, .hist*jadi saya sarankan Anda sesekali menghapusnya.

Gert
sumber
2

Saya berasumsi Anda berbicara tentang sesi simultan; memisahkan sesi yang saling berhadapan tidak terlalu berguna: Anda tidak akan pernah bisa menggunakan riwayatnya lagi, karena semua sesi akan unik. Jika itu masalahnya, Anda mungkin akan lebih baik hanya menonaktifkan riwayat perintah.

Jika kita berbicara tentang memisahkan sesi simultan, saya sarankan Anda menggunakan Bash. Saya cukup yakin saya tidak mendapatkan histori perintah dari dua sesi simultan yang dicampur dengannya. Bash hanya menulis histori pada .bash_historysaat logout, jadi histori perintah tidak akan tercampur sampai setelah logout. Asalkan menggunakan Bash dapat diterima, apakah itu akan menyelesaikan masalah Anda?

wzzrd
sumber
terima kasih untuk balasan Anda. Saya sedang mengerjakan HP-UX dan itu belum menginstal bash dan saya tidak punya izin untuk menginstalnya :(.
Hemant
1

Saya akan menambahkan sesuatu ke jawaban Gert.

Gert

Anda dapat menambahkan HISTFILE = ~ / .hist $$ ke .profile Anda. Ini harus menghasilkan file unik per sesi.

Milikku

Anda dapat menghapus file-file ini secara otomatis dengan menambahkan yang berikut ini.

trap 'rm ${HISTFILE}' exit

Robert Jacobs
sumber
2
Jadilah sedikit berhati-hati tentang jebakan keluar - shell tidak menumpuknya seperti yang Anda harapkan - jadi pengaturan lebih lanjut dari jebakan keluar akan terlalu banyak menulis semua yang sebelumnya. Saya menulis stacker untuk jebakan, tetapi hampir meniup setiap mental yang saya miliki.
david collier
-1

Anda bisa menggunakan layar . Saya juga membuat variabel yang ditentukan oleh profil konsole saya dan memberikan setiap sesi file sejarah yang berbeda , hanya cara yang bisa saya pikirkan.

xenoterracide
sumber
Saya tidak bisa memasang layar. bahkan tidak bisa dikompilasi di server saya.
Hemant
Saya tidak yakin bagaimana layar akan memberikan Anda kemampuan itu
Michael Mrozek
@Michael Anda dapat memiliki sesi yang berbeda dengan layar dan layar memiliki riwayatnya sendiri. Saya tidak tahu seseorang mengatakan kepada saya untuk menyelesaikan masalah saya dengan layar ... Saya tidak suka layar. lumpuh bahwa ini menjadi downmodded ketika jawaban kedua saya pada dasarnya sama dengan yang lain yang upmodded. @Hemant ... dan aku seharusnya tahu itu? Saya tidak menggunakan layar untuk melakukan ini pada sistem saya. Saya hanya tahu itu memungkinkan untuk efek serupa dilakukan dengan benar.
xenoterracide
Saya rasa saya tahu apa yang Anda gambarkan, tetapi ini bukan fitur layar, itu hanya efek samping dari cara kerja shell. Jika Anda membuka dua shell, perintah yang diketik dalam satu tidak akan muncul dalam riwayat yang lain kecuali jika shell secara khusus mendukungnya (misalnya, ZSH melakukannya, tetapi Anda perlu mengaktifkannya secara eksplisit). Itu tidak menyimpan sejarah yang terpisah, mereka berdua menulis ke file sejarah utama, Anda hanya tidak dapat melihat perubahan dari masing-masing shell karena biasanya shell tidak memeriksa perubahan file histori setelah mereka dimuat
Michael Mrozek
@MichaelMrozek Shell korn memiliki satu riwayat bersama untuk semua windows, ini tidak dapat dinonaktifkan. Menggunakan screentidak akan membantu sama sekali.
FUZxxl