Действительно ли возможно просмотреть “источник” для функции ksh?

Наша ksh среда определяет несколько функций. Названия этих функций могут быть перечислены с помощью затем typeset -f команда ksh (или functions псевдоним). Действительно ли возможно видеть определение (т.е. исходный код) для этих функций?

Это походит на очевидный вопрос, но я попробовал весь способ параметров к typeset -f без удачи.

Как пример (на Linux):

$ foo()
> {
>  echo foo
> }
$ foo
foo
$ typeset -f foo
foo
$

Для некоторых (но не все) другие функции, определяемые по умолчанию в среде, typeset -f действительно показывает источник.

Обновление 1: Это происходит с ядром Linux 2.4.21-32

Обновление 2: Обновление 2: Ctrl-V дает "Версию M 1993-12-28 n +" - кажется, что это - вполне старая версия, так не могли бы упомянуть меры Gilles ниже

Спасибо, Steve

8
задан stevec 31 August 2010 в 16:29
поделиться

2 ответа

В вопросе не упоминается версия ksh, но предполагается более старая версия, которая может иметь ошибку или ограничение. Вот соответствующие выдержки из журнала изменений ksh93:

08-01-31 --- Выпуск ksh93s+ ---
07-11-01 Ошибка, при которой typeset -f fun не отображал определение функции при вызове во вложенной оболочке, была исправлена.

03-03-18 --- Выпуск ksh93o ---
03-02-28 Все определения функций могут быть отображены с помощью typeset -f, а не только те, которые хранятся в файле истории. Кроме того, typeset +f отображает имя функции, за которым следует комментарий, содержащий номер строки и имя пути к файлу, в котором определена эта функция.

2
ответ дан 5 December 2019 в 22:17
поделиться

Чтобы увидеть источник данной функции, используйте typeset -f <имя функции>, например:

$ foo
foo
$ typeset -f foo
function foo
{
    echo foo
}

Вы также можете использовать голый typeset -f, чтобы увидеть все функции и их источник.

4
ответ дан 5 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

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