This bug is fixed in recent Ubuntu releases by using
command_not_found_handler() and might be closed.

Anyway, I need a place to dump old useless code I presumably never need
again (in case I'm wrong and I'll find a use case for this) ...


Actually, according to the POSIX standard and zsh's implementation, exec 
returns 127 it the command is not found at all. and 126 if a file matching the 
command's name w/o executable bit set if found in $PATH, therefore the correct 
fix for this issue would be (if it wouldn't have been fixed by using 
command_not_found_handler already), to check if $? is 126 or 127.

An untested example fix (that also fixes other things), based on the
version still in Debian, is pasted below (warning: the sequence >&-
should not be used for anything except shell builtins or commands you
wrote yourself):


[[ -x /usr/share/command-not-found/command-not-found ]] || return 0

function cnf_preexec() {
  typeset -g cnf_command="${1%% *}"
}

function cnf_precmd() {
  case $? in (126|127)
    if [[ -n "${cnf_command-}" && -x 
/usr/share/command-not-found/command-not-found ]]
    then
      whence -- "$cnf_command" >&- ||
          /usr/bin/python /usr/share/command-not-found/command-not-found -- 
"$cnf_command"
      unset cnf_command
    fi
    ;;
  esac
}

typeset -ga preexec_functions
typeset -ga precmd_functions
preexec_functions+=cnf_preexec
precmd_functions+=cnf_precmd

** Changed in: command-not-found (Ubuntu)
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/841221

Title:
  In zsh command not found triggers upon any subshell exit code != 0

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/command-not-found/+bug/841221/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to