2013-02-15 46 views
6

Làm thế nào để tìm nguồn gốc của hàm bash được xây dựng?bash được xây dựng trong chức năng mã nguồn bash

Tôi biết rằng nó là một chức năng:

$type -t MY_APP 
function 

tôi thấy nó mã:

type MY_APP 
code 

Các câu hỏi là:

  1. đâu là nó được lưu trữ?
  2. Làm cách nào để sửa đổi?

Trả lời

7

Bạn có thể làm điều đó như thế này:

# 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 

Để chỉnh sửa các chức năng, mở file chứa các định nghĩa hàm (mà bạn tìm thấy từ trên cao). Chỉnh sửa hàm và lưu tệp. Sau đó, nguồn nó vào shell của bạn, như thế này:

$ . /path/to/function_file 
+0

hoạt động! Tôi đã thử khai báo -F my_function, nhưng nó chỉ in tên hàm mà không có hàm gỡ rối. Cảm ơn lời khuyên tốt. – idobr

+0

+1 Tôi chưa bao giờ sử dụng 'extdebug', vì vậy không biết có cách nào để xem tệp có chức năng được lấy từ đó. Rất đẹp. – chepner

+0

Điều này thật tuyệt vời! –

0

Chức năng thường được lưu trữ trong file .bashrc (hoặc trong /etc/bash.bashrc, mà cũng tồn tại như chỉ /etc/bashrc trên một số hệ thống). This answer từ SuperUser có một số chi tiết tốt về những gì một tập tin .bashrc là. Tương tự, this question trên Unix & chi tiết trang web Linux khi tốt nhất là bí danh, khi nào đến tập lệnh và thời điểm viết hàm.

+0

Chủ đề được liên kết thật thú vị. Tôi đã tìm kiếm trong .bashrc và .bashprofile, hàm được định nghĩa ở vị trí khác. Câu trả lời của @dogbane đã giúp tôi. – idobr

Các vấn đề liên quan