Как создавать загружаемые встроенные модули для Bash

Следующий perl oneliner считывает файл построчно, записывая последний массив до тех пор, пока он не встретится со строкой с физическим диском '1I :1 :1':

ssacli ctrl slot=0 show config | perl -ne 'if ($_ =~ /Array (.)/) { $array = $1; } elsif ($_ =~ /physicaldrive 1I:1:1/) { print $array; exit; }'
0
25.04.2020, 10:39
1 ответ

Имя файла должно быть «абсолютным» путем(в данном контексте, это просто путь с косой чертой ), иначе он будет искаться в BASH_LOADABLES_PATH, возвращаясь к dlopen(3)механизм поиска (, например, см. справочную страницу Linux). Кажется, что, несмотря на комментарии в enable.def, они не включают текущий каталог (, что хорошо, IMO ).

Просто используйте путь:

bash-5.0$ enable -f print print
bash: enable: cannot open shared object print: print: cannot open shared object file: No such file or directory
bash-5.0$ enable -f./print print
bash-5.0$ help print
print: print [-Rnprs] [-u unit] [-f format] [arguments]
    Display arguments.

    Output the arguments.  The -f option means to use the argument as a
    format string as would be supplied to printf(1).  The rest of the
    options are as in ksh.
2
19.03.2021, 02:26

Теги

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