History command works in a terminal, but doesn't when written as a bash script
bash, command-history, linux, shell, terminal
Solution
Looking at your history only makes sense in an interactive shell. Make that command a function instead of a standalone script. In your ~/.bashrc, put
popular_history() {
history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
}
Problem
I have a simple one-liner that works perfectly in the terminal: ``` history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head ``` What it does: Gives out the 10 most frequently used commands by the user recently. (Don't ask me why I would want to achieve such a thing) I fire up an editor and type the same with a `#!/bin/bash` in the beginning: ``` #!/bin/bash history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head ``` And say I save it as `script.sh`. Then when I go to the same terminal, type `bash script.sh` and hit Enter, nothing happens. What I have tried so far: Googling. Many people have similar pains but they got resolved by a `sudo su` or adding/removing spaces. None of this worked for me. Any idea where I might be going wrong? Edit: I would want to do this from the terminal itself. The system on which this script would run may or may not provide permissions to change files in the home folder. Another question as suggested by BryceAtNetwork23, what is so special about the `history` command that prevents us from executing it?