On Sep 24, 2014, at 4:06 PM, lolilolicon <loliloli...@gmail.com> wrote:
> On Thu, Sep 25, 2014 at 3:53 AM, Greg Wooledge <wool...@eeg.ccf.org> wrote: >> >> So, if Chet removes the feature, it would probably break something that >> someone cares about. Maybe there could be a compile-time option to >> disable it. Maybe there already is -- I didn't look. Many bash completion libraries also rely on function exports. > I don't expect more than a dozen who rely on this... but bash > programmers can be quite the perverts, so... A significant number of us have actually read the manual and rely on the ability of bash to export functions. I have literally hundreds of exported functions in my environment. Some are defined in a setup file '~/.bash_once', some get built on the fly by that file. As you might guess, ~/.bash_once is invokes only once per session by my .bashrc &.bash_login with something like: if [[ 0 == "${SET_ONCE:=0}" ]] ; then if [[ -f ~/.bash_once ]] ; then . ~/.bash_once else echo "No ~/.bash_once file for '~/.bashrc' to invoke." >&2 fi fi .bash_once defines SET_ONCE and loads literally hundreds of environment variables and exports many shell functions that would otherwise have to be defined in .bashrc and processed on every freaking run. .bash_once is about 50 times larger than .bashrc and .bash_login. Fast. Very fast. But without exportable functions, it wouldn't work at all. As an exercise for the student, consider the utility of this simplified excerpt: for SYSTEM in \ {foo,bar,baz}.dec.school.edu \ {alligator,snake-skin,lizard}.reptiles.work.com \ {misery,serenity,frailty}.films.home.org \ ; do # Strip off domain, use dash-less name as function name export FNAME=${SYSTEM%%.*} export FNAME=${FNAME//-/} eval $(echo "$FNAME() { ssh $SYSTEM" '"$@";};'" export -f $FNAME") unset SYSTEM FNAME done Hint - source those lines, then give the command 'builtin type snakeskin'. It's probably too much overhead for every bash invocation, but if you only do it once per session, it's damned useful. Consider this one vote against removing function exports. Steve