Откуда делает Bash, “не найденный” сообщение, прибывшее?

Если я ввожу недопустимую команду в Bash, я добираюсь:

$ asdf
asdf: not found

Я велся полагать, что "не найденное" сообщение прибывает из исполняемого файла нейтрализации, который называет Bash, когда это не может найти команду, Вы входите. Каковы имя и путь этого исполняемого файла?

3
задан 28.03.2011, 10:27

3 ответа

В дополнение к ответу Rena да это - функция - и можно заменить его!

Эта ссылка детализирует, как сделать это. Захватывающее сообщение, на самом деле. Как раз вовремя для Жертвы первоапрельской шутки! sl управляют кем-либо?

Великодушно снятый со связанной статьи (для потомства) этот фрагмент кода при размещении этой функции в Вашем .bashrc на платформе openSUSE:

command_not_found_handle() {

    export TEXTDOMAIN=command-not-found

    local cmd state rest
    local -i pid ppid pgrp session tty_nr tpgid

    # do not run when inside Midnight Commander or within a Pipe
    if test -n "$MC_SID" -o ! -t 1 ; then
        echo $"$1: command not found"
        return 127
    fi

    # do not run when within a subshell
    read pid cmd state ppid pgrp session tty_nr tpgid rest  < /proc/self/stat
    if test $$ -eq $tpgid ; then
        echo "$1: command not found"
        return 127
    fi

    # test for /usr/sbin and /sbin
    if test -x "/usr/sbin/$1" -o -x "/sbin/$1" ; then
        if test -x "/usr/sbin/$1" ; then prefix='/usr' ; else prefix='' ; fi
        echo $"Absolute path to '$1' is '$prefix/sbin/$1', so running it may require superuser privileges (eg. root)."
        return 127
    fi

    if test -n "$COMMAND_NOT_FOUND_AUTO" ; then
        # call command-not-found directly
        test -x /usr/bin/python && test -x /usr/bin/command-not-found && /usr/bin/python /usr/bin/command-not-found "$1" zypp
    else
        # print only info about command-not-found
        echo -e $"If '$1' is not a typo you can use command-not-found to lookup the package that contains it, like this:\n    cnf $1"
    fi

    return 127
}
3
ответ дан 07.12.2019, 23:16

Это выпущено bash самостоятельно. Попробовать

strings `which bash` | fgrep found
4
ответ дан 07.12.2019, 23:16

Сделал некоторое дальнейшее рытье и узнал, что это не исполняемый файл, а функция, command_not_found_handle () в Bash.

1
ответ дан 07.12.2019, 23:16

Теги

Похожие вопросы