F10 wrote:
...
tuy nhiên câu lệnh read trong linux thì lại khác. khi mình tìm đường dẫn tuyệt đối của nó thì không thấy.
Code:
#which read
/usr/bin/which: no read in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
mặc dù mình vẫn gõ read bình thường mà không cần phải chỉ ra đường dẫn tuyệt đối. Điều này dẫn tới phán đoán của mình là read là một function inline của Linux, location chứa nó là memory. Nghĩa là nó được load vào trong bộ nhớ sẵn từ khi hệ thống được boot.
Phán đoán của mình có đúng không?
Về mặt ý tưởng có thể bạn phán đoán đúng nhưng diễn đạt chưa chuẩn. `read` là một shell builtin command:
Code:
$ type read
read is a shell builtin
$ type ifconfig
ifconfig is /sbin/ifconfig
tương tự như `cd`, `echo`, ...
Một shell builtin command sẽ được chạy trong chính bản thân shell's process, khác với external command sẽ được shell 'fork' ra một process mới để chạy.
Để xem thông tin về builtin commands, người ta dùng `help`, ví dụ:
Code:
$ help help
help: help [-dms] [pattern ...]
Display information about builtin commands.
F10 wrote:
và để tạo các function kiểu như read thì mình phải làm thế nào? Có ví dụ minh hoạ bằng C thì rất tốt. Cảm ơn các bạn.
Đọc code của Bash: http://ftp.gnu.org/gnu/bash/