Tôi đã bắt gặp ví dụ này khi cố gắng gắn thiết bị usb bên trong thùng chứa openvz và tôi chưa bao giờ thấy cấu trúc trong dòng thứ hai trước đây. Bạn có thể giải thích những gì nó có nghĩa?
#!/bin/bash
. /etc/vz/vz.conf
Tôi đã bắt gặp ví dụ này khi cố gắng gắn thiết bị usb bên trong thùng chứa openvz và tôi chưa bao giờ thấy cấu trúc trong dòng thứ hai trước đây. Bạn có thể giải thích những gì nó có nghĩa?
#!/bin/bash
. /etc/vz/vz.conf
Câu trả lời:
Đó là một từ đồng nghĩa của nội dung source
. Nó sẽ thực thi các lệnh từ một tệp trong shell hiện tại , như đọc từ help source
hoặc help .
.
Trong trường hợp của bạn, tệp /etc/vz/vz.conf
sẽ được thực thi (rất có thể, nó chỉ chứa các phép gán biến sẽ được sử dụng sau này trong tập lệnh). Nó khác với việc chỉ thực thi tệp với, ví dụ, /etc/vz/vz.conf
theo nhiều cách: rõ ràng nhất là tệp không cần phải được thực thi; sau đó bạn sẽ nghĩ đến việc chạy nó với bash /etc/vz/vz.conf
nhưng điều này sẽ chỉ thực hiện nó trong một tiến trình con và tập lệnh cha sẽ không thấy bất kỳ sửa đổi nào (ví dụ: các biến) mà đứa trẻ thực hiện.
Thí dụ:
$ # Create a file testfile that contains a variable assignment:
$ echo "a=hello" > testfile
$ # Check that the variable expands to nothing:
$ echo "$a"
$ # Good. Now execute the file testfile with bash
$ bash testfile
$ # Check that the variable a still expands to nothing:
$ echo "$a"
$ # Now _source_ the file testfile:
$ . testfile
$ # Now check the value of the variable a:
$ echo "$a"
hello
$
Hi vọng điêu nay co ich.
source
không chỉ là bash - nó ở dạng vỏ chữ C ( csh
, tcsh
) - và zsh cũng vậy. .
hoạt động trong các vỏ kiểu Bourne bao gồm cả những cái được liệt kê . Xem xét rằng bash là một kiểu vỏ Bourne và hầu như không có tập lệnh bash nào có độ phức tạp không tầm thường có khả năng chạy trong trình bao kiểu C, điều đó đúng .
nên được coi là dễ mang theo hơn nhiều. Nhưng source
đồng nghĩa của bash .
tồn tại một phần cho tính di động.
.
là thiết bị di động phổ biến và source
có phạm vi rộng, nhưng không hoạt động đơn giản sh
.
Khi một tập lệnh được chạy bằng cách sử dụng 'nguồn', nó chạy trong trình bao hiện có, mọi biến được tạo hoặc sửa đổi bởi tập lệnh sẽ vẫn có sẵn sau khi tập lệnh hoàn tất.
Cú pháp. tên tệp [đối số]
source filename [arguments]
.
sẽ hoạt động trong hầu hết các shell (sh, ash, ksh, v.v.),source
là đặc trưng cho bash.