[ksh] how to reload history file without entering a command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [ksh] how to reload history file without entering a command
# 1  
Old 12-27-2018
[ksh] how to reload history file without entering a command

I'm basically looking for the ksh equivalent of bash's PROMPT_COMMAND="history -r", where simply redrawing the command prompt in a terminal will cause ksh to reload the history file.

At the risk of sounding incredibly lazy (in which case I would be guilty as charged), I've noticed that if I have two terminals open--call them terminal A and terminal B--and run some commands in terminal A, I can only see those commands in terminal B (while scrolling up and down through the history) after I execute a command in terminal B. What I would like is for me to be able to just press enter at the command prompt in terminal B--without having to execute a command--and then be able to see the commands from terminal A.

Is there a setting in .kshrc that would force the shell to reload the history file each time the command prompt is drawn?
# 2  
Old 12-27-2018
You might have better luck getting a reply from our ksh experts after the holidays.

Did you try searching the forums?
# 3  
Old 12-27-2018
I did try searching, but no luck. I guess nobody using ksh as their interactive shell is as lazy as I am.

Hopefully one of the ksh experts will get back to me after holidays. In the meantime, I realized that ksh does not actually need to execute a command in order to reload the history file: While typing Enter by itself does not trigger a reload, typing anything (even just a semicolon) followed by Enter does.

So it seems that ksh's default behavior when it comes to the history file is "append then reload". My question for the experts is whether there is a command does "just reload". I've already looked at the ksh man page and snooped around for options to the fc command, no luck. If there is such a command, adding it to my prompt_commands function (see my "On korn shell, how to share history..." thread--apparently I'm still too new here to share the link) should do the trick.
# 4  
Old 12-27-2018
Try:
Code:
alias r='fc -e -'

in ksh 88. I'm not quite sure what you meant by refresh, history -r is "recall" the way we used it, anyway. Using r alias:
r somecommand # recall a command, to edit the command you see, you need to have previously exported the EDITOR variable export EDITOR=vi Use the up arrow to scroll in reverse time order (from newest to oldest) from the point the r alias finds for you.

Code:
# start recall from last command issued.
r

# 5  
Old 12-27-2018
Thank you, Jim, that is a useful alias but not what I'm looking for. I'll try to explain it differently:

When I'm working, I often have multiple terminal emulators open at once. If I pick any one of them and start pressing the up and down arrows, I don't see the commands recently run in the other open terminals. I'm looking for something to put in ~/.kshrc that will cause terminals to re-parse/reload my HISTFILE just by pressing Enter at a command prompt (without having to type anything at the prompt). This way, whenever I am jumping between terminals, when I pick a random one I can simply press Enter and then pressing the up and down arrows show me all the commands in my HISTFILE.

Hope that's more clear.

-- Post updated at 03:36 AM ---

Perhaps most succinctly: Is there a command that flushes korn shell's history buffer and replaces it with contents of HISTFILE?
# 6  
Old 12-28-2018
Quote:
Originally Posted by DevuanFan
Perhaps most succinctly: Is there a command that flushes korn shell's history buffer and replaces it with contents of HISTFILE?
I am not really sure what you mean by that, but first let us be precise: are you talking about ksh88 (as it is found as the default shell in AIX and HP-UX) or ksh93?

Second, as far as i know there is no "history buffer" - apart from the history file - in ksh. You can have a separate history file for each shell instance (actually i like it that way because usually i need in a certain session the commands i used there before again, not the ones i used elsewhere, but that is a matter of personal taste) or you can have all sessions share a common history file. In each case "history" in the Korn shell is what is in this history file, nothing more, nothing less.

I hope this helps.

bakunin
# 7  
Old 12-28-2018
Quote:
Originally Posted by bakunin
as far as i know there is no "history buffer" - apart from the history file - in ksh...In each case "history" in the Korn shell is what is in this history file, nothing more, nothing less.
bakunin
Hi, bakunin. I'm finding that it is not so simple. If I have ksh running in a terminal emulator and manually edit the history file while the emulator is running, lines that I add to the HISTFILE will be picked up by the emulator. However, lines that I delete from the HISTFILE continue to show up in the terminal emulator's history. So it seems that the shell's idea of the history (which I'm calling its "history buffer") and what's actually in the HISTFILE are two different things. The only way for deleted lines to stop showing is to close the terminal emulator and open a new one.

Maybe my terminal emulator is introducing some unexpected behavior? I'll try a different emulator.

Thank you Jim and Neo. Yes, I'm finding that the only way to understand exactly what's going on will be to look at the source code. Alas, while my sh/bash, python, and perl kung fu is strong, C/C++ looks like gibberish to me, but I'll give it a shot anyway. If switching terminal emulators and/or recompiling ksh don't give me exactly the behavior I want, I may just go back to bash, which feels much more comfortable.

P.S. I'm using the public domain korn shell v5.2.14 (the default shell in OpenBSD 6.4).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script not entering VRFY after nc command

I am making a bash script right now and am running into an issue. As I am new to scripting, I do not know exactly what to do to get what I'm looking for in my script. Essentially, my script will automatically input VRFY common names after nc Example: nc 192.168.248.133 25 VRFY Allison... (2 Replies)
Discussion started by: ksrhayward
2 Replies

2. AIX

Checking the command history file in AIX

Hello, The system has been rebooted and I need to see the commands executed in the system prior to restart by the oracle user.The history command is not showing me the commands executed prior to reboot. Please advise. Best regards, Vishal (1 Reply)
Discussion started by: Vishal_dba
1 Replies

3. Shell Programming and Scripting

UNIX CO command for file version history

Hello :) I'm a newb when it comes to shell scripting and was wondering about a command(s) for a script that could be used to checkout a certain number of version/revision histories of a file. I know for the latest revison you "co filename" or for a certain revision number "co -r*.* filename"... (2 Replies)
Discussion started by: MN-DBA
2 Replies

4. UNIX for Dummies Questions & Answers

Command to reload a zone

I just created a CNAME and i was told a zone needs to be reloaded after creating a CNAME. What is the command to reload a zone after the CNAME has been created? Thanks in advance (1 Reply)
Discussion started by: German Shepherd
1 Replies

5. Solaris

Login delay after entering id (40 secs) same after entering pw

Hi all, I have just installed Solaris 10 on an old Fujitsu Primepower 650 which has been wiped clean. I haven't installed anything apart from the OS yet, so the machine is 99% idle. I get long delays when logging in, first after entering the id then another long delay after entering a valid... (8 Replies)
Discussion started by: longjon
8 Replies

6. Shell Programming and Scripting

What is the ksh equivalent to bash's "history -c" command?

Hi, What is the korn shell equivalent of bash shell's "history -c" command? I do know, how to clear the history list in ksh, I can do the following: > ~/.sh_historybut still, I am interested to know the single one line command as 'history -c' gives error on my ksh (1 Reply)
Discussion started by: royalibrahim
1 Replies

7. Solaris

Command for checking modification history on file

What is the command for checking modification history on file? ---------- Post updated at 01:20 PM ---------- Previous update was at 12:35 PM ---------- Let me rephrase this. On a regular Unix file can I at least check to see the time and date history modification of the file? (6 Replies)
Discussion started by: jastanle84
6 Replies

8. UNIX for Dummies Questions & Answers

Reload user crontab file

Hi Guys, Our user crontab files are located at /var/spool/cron/crontabs. I have to make some modifications to it. I have all the crontab entries in a file called 'crontab.actual'. I made changes to this file and now I want to reload these changes from the crontab.actual file to my crontab... (12 Replies)
Discussion started by: vandi
12 Replies

9. UNIX for Dummies Questions & Answers

ksh: how to make [up arrow] recall command history

I want to get my up arrow key to recall my previous commands in Korn shell. Anyone help please? thanks a bunch! BG (3 Replies)
Discussion started by: BG_JrAdmin
3 Replies

10. UNIX for Dummies Questions & Answers

entering a long command

hello everyone! Very basic question for the guru's in here but anyways, I am trying to type a command that is longer than the line. What character do I use to continue my command on the next line? Thanks in advance.... Todd (1 Reply)
Discussion started by: hedrict
1 Replies
Login or Register to Ask a Question