How can I simply persist functions written in the current terminal session for later use?
Suppose I write a Bash function at the command line:
$ hello-world() { echo "Hello, world!"; }
and I revise (perhaps hitting up-arrow to retrieve it from command history and edit it) and test and debug it, and eventually have a working function that does what I want:
$ hello-world
Hello, world!
Now I'd like to make this available in future sessions, so I... well, currently, the best I can come up with is type hello-world | tail -n+2 >> ~/.bash_aliases
(using tail
to remove the helpful hello-world is a function
message).
Is there a built-in, or simpler way to do this? Ideally, something that would add every function I've written in the current shell?
2 answers
For functions, you could dump all currently-defined functions to a file such as appending to ~/.bashrc
.
typeset -f >> ~/.bashrc
Note that this specifically will display every function, regardless of where it was defined. So you would have to manually remove duplicates/unwanted entries.
You could also bother to save that output to a "full" file, and compare it to the output of a new shell.
bash -i -c 'typeset -f' > ~/funcs-plain
typeset -f > ~/funcs-mine
And then diff them for easy comparison.
0 comment threads
Are you familiar with the Bash history shortcuts? The most basic is !!
to refer to the last command you entered. This lets you do things like sudo !!
to run the last command with privileges.
You could use that or the "search" one (last command containing substring: !?
) to echo it to your alias file.
echo '!?()' >> ~/.bash_aliases
0 comment threads