Lệnh source là một shell command được tích hợp sẵn, được sử dụng để đọc và thực thi các lệnh chứa trong một file ở shell session hiện tại. Lệnh source thường được sử dụng để giữ lại hoặc thay đổi biến môi trường trong shell session hiện tại. Nói một cách ngắn gọn, đây là lệnh được sử dụng để thực thi các commands trong shell hiện tại.
Xem thêm: shell là gì
Lệnh command rất hữu ích trong những trường hợp như:
- Làm mới các biến môi trường trong shell session hiện tại
- Thực thi một đoạn shell script trong môi trường shell session hiện tại
- Để import một hàm shell vào script của bạn
- Đọc biến từ shell script
Cú pháp sử dụng lệnh source
Cú pháp được tích hợp sẵn trong shell command rất human-readable. Đối số đầu tiên khi sử dụng lệnh shell chính là file truyền vào và nếu các đối số sau đó được cung cấp – nó sẽ đóng vai trò như tham số đầu vào cho file script.
source FILENAME [ARGUMENTS]
Dấu chấm (.) cũng có thể được sử dụng để thay thế cho lệnh source
. FILENAME [ARGUMENTS]
Hướng dẫn sử dụng lệnh source
Dưới đây mình sẽ giải thích bằng một số ví dụ cụ thể về cách sử dụng lệnh source
1. Làm mới môi trường shell hiện tại
Khi sử dụng linux, một user có thể định nghĩa alias trong môi trường shell hiện tại. Để định nghĩa alias ngắn gọn thay vì sử dụng lệnh “ls -l” dài dòng để kiểm tra thông tin chi tiết file và folder trong folder bạn đang đứng:
alias ll = 'ls -l'
Để sử dụng alias vừa khai báo, gõ vào terminal:
ll
Để làm mới môi trường shell hiện tại, gõ vào lệnh sau:
source ~/.bashrc
Nghĩa là khi làm mới môi trường shell hiện tại, thì alias “ll” bạn khai báo bên trên sẽ không sử dụng được nữa.
2. Thực thi shell script trong môi trường shell hiện tại
Shell script không thể nào biết được các biến mà bạn định nghĩa trong môi trường shell hiện tại. Lệnh source có thể được sử dụng để thực thi shell script trong shell session hiện tại.
Để định nghĩa một biến tạm thời trong môi trường shell hiện tại:
WEBSITE = example.com
Tạo một đoạn shell script:
#!/bin/bash
echo $WEBSITE
Lưu file ở trên lại với tên script.sh và chmod để thực thi file shell script này sau khi đã thực hiện 2 bước trên:
source ./script.sh
Kết quả hiển thị sau khi sử dụng lệnh source sẽ là:
example.com
3. Import một hàm shell
Định nghĩa một đoạn shell script:
!#/bin/bash
foo() {
echo "test"
}
Lưu file lại với tên script.sh
Để improt hàm foo() từ đoạn script trên vào phiên shell hiện tại, gõ lệnh:
source script.sh
Để sử dụng hàm shell đã khai báo trên, gõ vào:
foo
Khi đó, kết quả output sau khi gõ lệnh trên sẽ là:
test
4. Đọc biến từ shell script
Để tạo một shell script chứa nhiều biến khác nhau, tạo file:
#!/bin/bash
a=1
b=2
c=3
Để đọc các biến từ shell script trên từ một đoạn shell khác, nội dung đoạn script sẽ là:
#!/bin/bash
source abovescript.sh
echo $a, $b, $c
Nội dung đoạn output sau khi thực thi đoạn script trên sẽ là:
1, 2, 3
5. Đọc và thực thi command
Lệnh shell cũng có thể đọc và thực thi các commands từ một file. Giả sử bạn có một file text chứa các command như sau:
pwd
date
Khi sử dụng lệnh source để đọc và thực thi command từ file dạng txt dạng như sau:
$ source example.txt
/home/vsudo
Sat May 15 09:38:12 +07 2021
6. Truyền tham số vào hàm shell
Giờ mình sẽ giải thích cách để truyền các tham số vào hàm shell thông qua lệnh source
File function.sh
!/usr /bin/bash
var1=$1
var2=$2
File execute.sh
!/usr/bin/bash
source functions.sh 10 AA
echo “var1 = $var1”
echo “var2 = $var2”
Khi thực thi file excute.sh kết quả sẽ như sau:
var1 = 10
var2 = AA
Kết luận
Lệnh source thường được sử dụng để thực thi các shell script trong phiên shell hiện tại, trong khi đó lệnh exec được sử dụng để chạy các lệnh trong một shell mới. Thông qua bài viết này, bạn đã biết thêm một số ví dụ thực tế cụ thể khi sử dụng lệnh source rồi đấy.