Câu trả lời:
Các historyđược xây dựng trong bashphép xác định tên tập tin khi được sử dụng với -anrwcờ, và -amô tả cờ từ help historytrạng thái:
nối các dòng lịch sử từ phiên này vào tệp lịch sử
Do đó, chúng ta có thể làm:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Đối với bản ghi, -w(lịch sử ghi vào tệp opion) ghi toàn bộ lịch sử vào tệp đã chỉ định, vì vậy -a(chắp thêm) ở đây là lựa chọn ưu tiên.
Có những cách thủ công khác. Cụ thể là kshkhông có -acờ như bashvậy, nhưng cái ksh và mkshphải có là HISTFILEbiến môi trường (và bashcũng có điều đó, vì bashbao gồm rất nhiều kshtính năng); bằng cách này, biến này theo mặc định không được đặt (ít nhất là mkshtrên Ubuntu không đặt nó). Vì vậy, để xuất phiên hiện tại sang tệp khác, chúng tôi gọi lệnh được đặt HISTFILEtrước để theo lệnh cú pháp shell có nghĩa là chạy lệnh với biến môi trường bổ sung mà bạn chỉ định. Thích như vậy:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Những gì bạn cũng có thể thấy từ điều này là kshlịch sử đầu ra của trình bao với các ký tự đặc biệt, thay vì văn bản đơn giản như những gì bashnó làm. Vì vậy, bạn có thể muốn mở tập tin đó với ksh.
Theo như trình bao POSIX /bin/shtrên Ubuntu , đó là Debian Almquist Shell hoặc Dash, đã tồn tại tích fchợp sẵn . Tuy nhiên, trên Ubuntu dash được biên dịch mà không cần chỉnh sửa lib , đây là lựa chọn có ý thức của các nhà phát triển Ubuntu vì lý do hiệu suất, vì vậy fcvà các chế độ khác yêu cầu chỉnh sửa dòng không hoạt động (trừ khi dashtự biên dịch lại và cài đặt lib-edit).
Các cách trung lập của Shell sẽ là ghi lại phiên của bạn bằng các công cụ hiện có hoặc viết chức năng của riêng bạn để ghi lại trên cơ sở mỗi lệnh.