Jak znaleźć źródło wbudowanej funkcji basha?bash zbudowany w funkcji bash kod źródłowy
wiem, że jest to funkcja:
$type -t MY_APP
function
widzę to kod:
type MY_APP
code
Pytania są:
- Gdzie to jest zapisane?
- Jak mogę to zmienić?
Jak znaleźć źródło wbudowanej funkcji basha?bash zbudowany w funkcji bash kod źródłowy
wiem, że jest to funkcja:
$type -t MY_APP
function
widzę to kod:
type MY_APP
code
Pytania są:
Można to zrobić tak:
# Turn on debug
$ shopt -s extdebug
# Print out the function's name, line number and file where it was sourced from
$ declare -F my_function
my_function 46 /home/dogbane/.bash/.bash_functions
# Turn off debug
shopt -u extdebug
Aby zmodyfikować funkcję, otwórz plik zawierający definicję funkcji (którą znaleziono z góry). Edytuj funkcję i zapisz plik. Następnie zaopatrywać go w swojej skorupie, tak:
$ . /path/to/function_file
Funkcje są zwykle przechowywane w pliku .bashrc
(lub w /etc/bash.bashrc
, który również występuje jako właśnie /etc/bashrc
na niektórych systemach). This answer z SuperUser ma kilka dobrych informacji na temat pliku .bashrc
. Podobnie, this question na stronie Linuxa Unix & podaje szczegóły, kiedy najlepiej pseudo, kiedy skryptować i kiedy pisać funkcję.
Powiązany temat jest interesujący. Szukałem w .bashrc i .bashprofile, zdefiniowana funkcja znajdowała się w innym miejscu. Odpowiedź @ dogbane pomogła mi. – idobr
to działa! Próbowałem zadeklarować -F my_function, ale wypisuje tylko nazwę funkcji bez funkcji debugowania. Dzięki za dobrą radę. – idobr
+1 Nigdy nie używałem 'extdebug', więc nie wiedziałem, że istnieje sposób, aby zobaczyć plik, z którego pochodzi funkcja. Bardzo dobrze. – chepner
To jest genialne! –