Một khái niệm Unix quan trọng là environment, mà được định nghĩa bởi các biến môi trường. Một số được thiết lập bởi hệ thống, số khác được thiết lập bởi bạn, bởi shell hoặc bất kỳ chương trình mà bạn tải về.
Một biến là một chuỗi ký tự mà chúng ta gán một giá trị. Giá trị được chỉ định có thể là một số, văn bản, tên file, thiết bị hoặc bất kỳ kiểu dữ liệu khác.
Ví dụ, đầu tiên chúng ta thiết lập một biến TEST và sau đó chúng ta truy cập giá trị của nó bằng cách sử dụng lệnh echo.
$TEST="Unix Programming" $echo $TEST Unix Programming
Ghi chú rằng các biến môi trường được thiết lập mà không sử dụng ký hiệu $ nhưng trong khi truy cập chúng, chúng ta sử dụng ký hiệu $ như là một tiền tố. Những biến này giữ giá trị của chúng cho đến khi chúng ta thoát khỏi shell.
Khi bạn đăng nhập vào hệ thống, Shell ở dưới chế độ khởi tạo để thiết lập môi trường biến. Điều này thường là tiến trình 2 bước mà bao gồm Shell đọc các file sau:
/etc/profile
profile
Tiến trình như sau:
- Kiểm tra shell để thấy /etc/profile có tồn tại hay không..
- Nếu nó tồn tại, Shell đọc nó. Nếu không thì, file này bị bỏ qua. Không có thông báo lỗi hiển thị.
- Shell kiểm tra file .profile có tồn tại hay không trong thư mục chính của bạn. Thư mục chính là thư mục mà bắt đầu khi bạn đăng nhập thành công vào hệ thống.
- Nếu nó tồn tại, Shell đọc nó; nếu không thì, Shell bỏ qua. Sẽ không có thông báo lỗi được hiển thị.
Ngay sau khi cả hai file trên được đọc, Shell hiển thị một dòng nhắc:
$
Đây là dòng nhắc mà tại đó bạn có thể nhập lệnh để thực thi chúng.
Ghi chú - Tiến trình khởi tạo Shel được liệt kê chi tiết ở đây áp dụng cho tất cả Shell kiểu Bourne, nhưng một vài file được thêm vào được sử dụng bởi bash và ksh.
.profile File trong Unix/Linux:
File /etc/profile được duy trì bởi người quản lý hệ thống và chứa đựng thông tin khởi tạo Shell được yêu cầu bởi tất cả người sử dụng trên hệ thống.
File .profile là dưới quyền kiểm soát của bạn. Bạn có thể nhập thêm thông tin Shell tùy theo ý bạn muốn tới file này. Thông tin ít nhất mà bạn cần thiết lập bao gồm:
Kiểu terminal mà bạn đang sử dụng
Danh sách các thư mục mà trong đó đặt vị trí các lệnh
Danh sách các biến của kiểu terminal của bạn.
Bạn có thể kiểm tra .profile trong thư mục chính. Mở nó bằng cách sử dụng bộ soạn vi và kiểm tra tất cả các biến thiết lập cho môi trường của bạn.
Thiết lập kiểu terminal trong Unix/Linux
Thường thì kiểu terminal bạn đang sử dụng là được định hình tự động bằng chương trình login hoặc getty. Đôi khi, tiến trình định hình tự động này dự đoán kiểu terminal của bạn không chính xác.
Nếu kiểu terminal không được thiết lập chính xác, kết quả của lệnh có thể trông khá lạ, hoặc bạn không thể tương tác với Shell một cách chính xác.
Để đảm bảo không xảy ra trường hợp này, hầu hết người sử dụng thiết lập kiểu terminal của họ tới dạng mẫu số chung thấp nhất như sau:
$TERM=vt100 $
Thiết lập PATH trong Unix/Linux:
Khi bạn gõ bất kỳ lệnh nào trên dòng nhắc lệnh, Shell phải xác định vị trí lệnh trước khi nó có thể được thực thi.
Biến PATH xác định vị trí trong đó Shell sẽ tìm kiếm các lệnh. Thường thì nó được thiết lập như sau:
$PATH=/bin:/usr/bin $
Tại đây mỗi cổng vào (entry) được thiết lập riêng rẽ bởi dấu hai chấm ":" là các thư mục. Nếu bạn yêu cầu Shell để thực thi một lệnh và nó không thể tìm kiếm lệnh đó trong bất kỳ thư mục đã được cung cấp biến PATH, một thông tin tương tự như sau xuất hiện:
$hello hello: not found $
Các biến PS1 và PS2 được bàn luận trong mục kế tiếp.
Các biến PS1 và PS2 trong Unix/Linux
Các ký tự mà Shell hiển thị khi dòng nhắc lệnh được giữ trong biến PS1. Bạn có thể thay đổi biến này tới bất kỳ cái gì bạn muốn. Ngay sau khi bạn thay đổi nó, nó sẽ được sử dụng bởi shell từ thời điểm đó.
Ví dụ, nếu bạn thông báo lệnh:
$PS1='=>' => => =>
Dòng nhắc có thể trở thành =>. Để thiết lập giá trị của PS1 để nó chỉ thư mục làm việc, thông báo lệnh sau:
=>PS1="[\u@\h \w]$" [root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$ [root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
Kết quả của lệnh này là dòng nhắc lệnh hiển thị tên sử dụng của người dùng, tên hostname, và thư mục làm việc.
Có một vài dãy thoát (escape) được sử dụng làm tham số giá trị cho PS1, vì thế cố gắng giới hạn chính bạn để dòng nhắc không lấn át thông tin.
Dãy escape | Miêu tả |
---|---|
\t | Thời gian hiện tại, diễn tả ở dạng HH:MM:SS |
\d | Ngày hiện tại, diễn tả ở dạng Ngày trong tuần Tháng Ngày |
\n | Dòng mới |
\s | Môi trường Shell hiện tại |
\W | Thư mục làm việc |
\w | Đường Path đầy đủ của thư mục làm việc |
\u | Tên sở hữu hiện tại của người sử dụng |
\h | Hostname của thiết bị hiện tại |
# | Số lượng lệnh của lệnh hiện tại. Tăng mỗi khi có một lệnh mới được nhập |
$ | Nếu UID hiệu quả là 0 (đó là, nếu bạn được đăng nhập như là root), kết thúc dòng nhắc với ký tự #; nếu không thì, sử dụng $. |
Bạn có thể tạo sự thay đổi bởi chính bạn mỗi khi bạn đăng nhập vào, hoặc bạn có thể có thay đổi được tạo một cách tự động trong PS1 bằng cách thêm nó tới file .profile.
Khi bạn thông báo một lệnh mà chưa hoàn thiện, Shell sẽ hiển thị một dòng nhắc lệnh thứ hai và đợi bạn hoàn thiện lệnh đó và nhập lại.
Dòng nhắc lệnh mặc định thứ hai là ký hiệu lớn hơn >, nhưng có thể được thay đổi bằng cách định nghĩa lại biến PS2.
Dưới đây là ví dụ về cách sử dụng dòng nhắc lệnh thứ hai:
$ echo "this is a > test" this is a test $
Tiếp theo là ví dụ mà định nghĩa lại PS2 với một dòng nhắc được tùy chỉnh theo ý ban:
$ PS2="secondary prompt->" $ echo "this is a secondary prompt->test" this is a test $
Các biến môi trường trong Unix/Linux
Dưới đây là một danh sách cục bộ của các biến môi trường quan trọng. Những biến này sẽ được thiết lập và truy cập như đã đề cập phần trên.
Biến | Miêu tả |
---|---|
DISPLAY | Chứa đựng bộ nhận diện cho sự hiển thị mà các chương trình X11 nên sử dụng bởi mặc định. |
HOME | Chỉ dẫn thư mục chính của người sử dụng hiện tại: tham số mặc định cho lệnh cd có sẵn. |
IFS | Chỉ dẫn Internal Field Separator mà được sử dụng bởi sự phân tích từ đang tách sau sự mở rộng. |
LANG | LANG mở rộng Locale hệ thống mặc định; LC_ALL có thể được sử dụng để viết đè lên (có quyền ưu tiên cao hơn) điều này. Ví dụ, nếu giá trị của nó là pt_BR, thì sau đó ngôn ngữ được thiết lập là (Brazilian) Portuguese và miền địa phương là Brazil. |
LD_LIBRARY_PATH | Trên nhiều hệ thống Unix với một Dynamic Linker, chứa một danh sách dấu hai chấm riêng rẽ của các thư mục mà Dynamic Linker tìm kiếm các đối tượng được chia sẻ khi xây dựng một hình ảnh tiến trình sau khi thực thi, trước khi tìm kiếm bất kỳ thư mục khác. |
PATH | Chỉ dẫn tìm kiếm path cho các lệnh. Nó là một danh sách dấu hai chấm riêng rẽ của các thư mục mà trong đó Shell tìm kiếm cho các lệnh. |
PWD | Chỉ dẫn thư mục làm việc hiện tại khi thiết lập bởi lệnh cd. |
RANDOM | Tạo một số nguyên ngẫu nhiên giữa 0 và 32767 mỗi khi nó được nhắc đến. |
SHLVL | Lượng gia bởi mỗi khi bash được bắt đầu. Biến này hữu dụng khi xác định có hay không lệnh exit có sẵn kết thúc ở mục hiện tại. |
TERM | Liên quan kiểu hiển thị. |
TZ | Liên quan miền thời gian (time zone). Nó có thể nhận các giá trị như GMT, AST…. |
UID | Mở rộng ID sử dụng dạng số của người sử dụng hiện tại, khởi tạo khi Shell bắt đầu. |
Dưới đây là ví dụ minh họa một vài biến môi trường:
$ echo $HOME /root ]$ echo $DISPLAY $ echo $TERM xterm $ echo $PATH /usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin $
Theo Tutorialspoint
Bài trước: Quyền hạn/Chế độ truy cập file trong Unix