# Is there a cursor-based interface to change environment variables?

I often need to change a small part of long environment variable (especially, e.g., paths), and do it either by pasting the thing into an editor and changing it there, or the equivalent.

Is there some small convenience utility to edit environment variables with a cursor on the command line?

I suppose I could always whip one up, but am hoping there's already something that I'm just not aware of.

-

This is what I use (ksh syntax but should just work with bash too):

function viPath
{
typeset _path=${1:-PATH} typeset _separator=${2:-:}
eval echo "\_path" | tr $_separator '\n' >~/.path vi ~/.path eval _path=$(cat ~/.path | tr '\n' $_separator) eval${1:-PATH}=$(eval echo$_path | sed 's/.$//') \rm ~/.path }  - This looks promising, but I didn't get it to quite work. I'll have to tinker with it when I get a chance. – Catskul Sep 22 '11 at 17:50 What doesn't work ? – jlliagre Sep 22 '11 at 21:19 Not certain, but the PATH is empty upon save/exit, ":wq". I still have yet to try to debug. – Catskul Sep 23 '11 at 17:07 I guess you are using it as a shell script. It must be a function for the variable change to persist. – jlliagre Sep 23 '11 at 18:19 Can't think of one that would let you interactively edit it directly on the command line but there are ways to make it more convenient than what you're describing. If it's a short term change and you just need to add something to the path, you can self reference the current value. For example, in Bash: PATH=$PATH:/ADDITIONAL/PATH


Or if you want to alter precedence, you can prepend it with

PATH=/ADDITIONAL/PATH:$PATH  You can also save yourself a cut and paste by echoing the value into a temporary file echo$PATH > tempfile.txt


If you have more complex or permanent changes to make, you can reference and edit your environment variables in your equivalent rc and or profile file. If they're not already present, you can use the echo method to get them in an editable state, (just make sure to use >> to append instead of overwrite). Or, in vi, you can also use

:r!echo $PATH  In emacs it would be C-u M-! echo$PATH


To insert the output into the file you're working on.

-
These are all things that I do at the moment. I'm trying to make temporary changes to variables, and I'm looking for something with fewer steps to smooth my work flow. – Catskul Sep 22 '11 at 17:50