Sorry for the delayed reply, I tested it, & looked fine to me, So, Ben, what do you think about this workaround?
Thanks, Alex Wang, On Fri, Mar 6, 2015 at 7:35 AM, Peter Amidon <pe...@picnicpark.org> wrote: > On Thu, 05 Mar 2015 21:58:38 -0800: Ben Pfaff <b...@nicira.com> wrote: > > Without digging into it, it's not obvious to me why you need to know > the > > bash prompt. Can you just set a known prompt instead? > > In a few cases the script has to print some output to the user (e.g. if > the user attempts to complete while on an argument that should name a > new bridge, the script can't complete it). If that happens, we thought > that the best experience for the user would be printing out the command > line exactly as it appeared when the user first entered it, ideally with > the same prompt as was originally used, after the message. > > Unfortunately, since PS1 can contain escape sequences that are only > recognized by bash, when printing a prompt, the only reliable way to get > the prompt seems to be starting a subshell, exporting the current > environment, and capturing the prompt as was used in the subshell. > > However, for testing, it makes sense to use a known value; the script > originally did this in a way that still resulted in using a subshell, > but we can change it to detect test settings before trying to start a > shell. Below is an incremental diff that passes all the tests without > hanging when run in parallel; used interactively, it appears to work as > expected. > > ---Peter > > diff --git a/utilities/ovs-vsctl-bashcomp.bash > b/utilities/ovs-vsctl-bashcomp.bash > index ba4429f..911f600 100755 > --- a/utilities/ovs-vsctl-bashcomp.bash > +++ b/utilities/ovs-vsctl-bashcomp.bash > @@ -409,6 +409,10 @@ _ovs_vsctl_complete_target () { > > # Extract PS1 prompt. > _ovs_vsctl_get_PS1 () { > + if [ "$test" = "true" ]; then > + printf -- "> " > + return; > + fi > > # Original inspiration from > # > http://stackoverflow.com/questions/10060500/bash-how-to-evaluate-ps1-ps2, > @@ -637,12 +641,6 @@ _ovs_vsctl_bashcomp () { > <<< "$tmp" > export COMP_WORDS > export COMP_CWORD="$((${#COMP_WORDS[@]}-1))" > - export PS1="> " > - # This is used to make the PS1-extraction code not emit extra > - # escape sequences; it seems like bash assumes that unknown > - # terminal names are dumb which means this should work even in > - # the unlikely occurence of the terminal "dumb" not existing. > - export TERM="dumb" > fi > > # Extract the conf.db path. > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev