Unix / Linux - Môi trường

Trong chương này, chúng ta sẽ thảo luận chi tiết về môi trường Unix. Một khái niệm Unix quan trọng làenvironment, được xác định bởi các biến môi trường. Một số do hệ thống thiết lập, một số khác do bạn thiết lập, nhưng một số khác do shell hoặc bất kỳ chương trình nào tải chương trình khác.

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à số, văn bản, tên tệp, thiết bị hoặc bất kỳ loại dữ liệu nào khác.

Ví dụ: đầu tiên chúng tôi đặt một TEST biến và sau đó chúng tôi truy cập giá trị của nó bằng cách sử dụng echo lệnh -

$TEST="Unix Programming"
$echo $TEST

Nó tạo ra kết quả sau.

Unix Programming

Lưu ý rằng các biến môi trường được đặt mà không sử dụng $nhưng trong khi truy cập chúng, chúng tôi sử dụng tiền tố $ sign. Các biến này giữ nguyên giá trị của chúng cho đến khi chúng ta ra khỏi shell.

Khi bạn đăng nhập vào hệ thống, trình bao trải qua một giai đoạn được gọi là initializationđể thiết lập môi trường. Đây thường là một quy trình hai bước liên quan đến trình bao đọc các tệp sau:

  • /etc/profile
  • profile

Quy trình như sau:

  • Trình bao kiểm tra xem tệp có /etc/profile tồn tại.

  • Nếu nó tồn tại, shell sẽ đọc nó. Nếu không, tệp này sẽ bị bỏ qua. Không có thông báo lỗi nào được hiển thị.

  • Trình bao kiểm tra xem tệp có .profiletồn tại trong thư mục chính của bạn. Thư mục chính của bạn là thư mục mà bạn bắt đầu sử dụng sau khi đăng nhập.

  • Nếu nó tồn tại, shell sẽ đọc nó; nếu không, vỏ bỏ qua nó. Không có thông báo lỗi nào được hiển thị.

Ngay sau khi cả hai tệp này được đọc, trình bao sẽ hiển thị lời nhắc -

$

Đây là lời nhắc nơi bạn có thể nhập các lệnh để chúng được thực thi.

Note - Quy trình khởi tạo shell được nêu chi tiết ở đây áp dụng cho tất cả Bourne gõ shell, nhưng một số tệp bổ sung được sử dụng bởi bashksh.

Tệp .profile

Tập tin /etc/profile được quản trị viên hệ thống của máy Unix của bạn duy trì và chứa thông tin khởi tạo shell mà tất cả người dùng trên hệ thống yêu cầu.

Tập tin .profilenằm trong tầm kiểm soát của bạn. Bạn có thể thêm bao nhiêu thông tin tùy chỉnh trình bao tùy thích vào tệp này. Bộ thông tin tối thiểu mà bạn cần định cấu hình bao gồm:

  • Loại thiết bị đầu cuối bạn đang sử dụng.
  • Danh sách các thư mục để định vị các lệnh.
  • Danh sách các biến ảnh hưởng đến giao diện của thiết bị đầu cuối của bạn.

Bạn có thể kiểm tra .profilecó sẵn trong thư mục chính của bạn. Mở nó bằng trình chỉnh sửa vi và kiểm tra tất cả các biến được đặt cho môi trường của bạn.

Đặt loại đầu cuối

Thông thường, loại thiết bị đầu cuối bạn đang sử dụng được định cấu hình tự động bởi login hoặc là gettycác chương trình. Đôi khi, quá trình cấu hình tự động đoán sai thiết bị đầu cuối của bạn.

Nếu thiết bị đầu cuối của bạn được đặt không chính xác, đầu ra của các lệnh có thể trông khác lạ hoặc bạn có thể không tương tác với trình bao đúng cách.

Để đảm bảo rằng không phải như vậy, hầu hết người dùng đặt thiết bị đầu cuối của họ thành mẫu số chung thấp nhất theo cách sau:

$TERM=vt100
$

Đặt PATH

Khi bạn nhập bất kỳ lệnh nào trên dấu nhắc lệnh, trình bao phải xác định vị trí lệnh đó trước khi nó có thể được thực thi.

Biến PATH chỉ định các vị trí mà shell sẽ tìm kiếm các lệnh. Thông thường biến Path được đặt như sau:

$PATH=/bin:/usr/bin
$

Ở đây, mỗi mục nhập riêng lẻ được phân tách bằng ký tự dấu hai chấm (:)là các thư mục. Nếu bạn yêu cầu trình bao thực hiện một lệnh và nó không thể tìm thấy nó trong bất kỳ thư mục nào được đưa ra trong biến PATH, một thông báo tương tự như sau sẽ xuất hiện:

$hello
hello: not found
$

Có các biến như PS1 và PS2 sẽ được thảo luận trong phần tiếp theo.

Biến PS1 và PS2

Các ký tự mà trình bao hiển thị dưới dạng dấu nhắc lệnh của bạn được lưu trữ trong biến PS1. Bạn có thể thay đổi biến này thành bất kỳ thứ gì bạn muốn. Ngay sau khi bạn thay đổi nó, nó sẽ được shell sử dụng từ thời điểm đó.

Ví dụ, nếu bạn phát hành lệnh -

$PS1='=>'
=>
=>
=>

Lời nhắc của bạn sẽ trở thành =>. Để đặt giá trị củaPS1 để nó hiển thị thư mục làm việc, hãy ra lệnh -

=>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ấu nhắc hiển thị tên người dùng của người dùng, tên máy (tên máy) và thư mục làm việc.

Có khá nhiều escape sequencescó thể được sử dụng làm đối số giá trị cho PS1; cố gắng giới hạn bản thân ở mức quan trọng nhất để lời nhắc không làm bạn choáng ngợp với thông tin.

Sr.No. Trình tự thoát & Mô tả
1

\t

Thời gian hiện tại, được biểu thị bằng HH: MM: SS

2

\d

Ngày hiện tại, được biểu thị bằng Ngày trong tuần, Ngày tháng

3

\n

Dòng mới

4

\s

Môi trường shell hiện tại

5

\W

Thư mục làm việc

6

\w

Đường dẫn đầy đủ của thư mục làm việc

7

\u

Tên người dùng hiện tại của người dùng

số 8

\h

Tên máy chủ của máy hiện tại

9

\#

Số lệnh của lệnh hiện tại. Tăng khi nhập lệnh mới

10

\$

Nếu UID hiệu dụng là 0 (nghĩa là, nếu bạn đăng nhập bằng quyền root), hãy kết thúc lời nhắc bằng ký tự #; nếu không, hãy sử dụng dấu $

Bạn có thể tự thực hiện thay đổi mỗi khi đăng nhập hoặc bạn có thể tự động thực hiện thay đổi trong PS1 bằng cách thêm nó vào .profile tập tin.

Khi bạn đưa ra một lệnh chưa hoàn thành, trình bao sẽ hiển thị một lời nhắc thứ hai và đợi bạn hoàn thành lệnh và nhấn Enter lần nữa.

Lời nhắc phụ mặc định là > (dấu lớn hơn), nhưng có thể được thay đổi bằng cách xác định lại PS2 biến shell -

Sau đây là ví dụ sử dụng lời nhắc phụ mặc định:

$ echo "this is a
> test"
this is a
test
$

Ví dụ dưới đây định nghĩa lại PS2 với lời nhắc tùy chỉnh:

$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

Các biến môi trường

Sau đây là danh sách một phần các biến môi trường quan trọng. Các biến này được đặt và truy cập như được đề cập bên dưới -

Sr.No. Biến & Mô tả
1

DISPLAY

Chứa số nhận dạng cho màn hình X11 chương trình nên sử dụng theo mặc định.

2

HOME

Cho biết thư mục chính của người dùng hiện tại: đối số mặc định cho cd built-in chỉ huy.

3

IFS

Chỉ ra Internal Field Separator được sử dụng bởi trình phân tích cú pháp để tách từ sau khi mở rộng.

4

LANG

LANG mở rộng đến ngôn ngữ hệ thống mặc định; LC_ALL có thể được sử dụng để ghi đè điều này. Ví dụ, nếu giá trị của nó làpt_BR, sau đó ngôn ngữ được đặt thành (Braxin) tiếng Bồ Đào Nha và ngôn ngữ là Braxin.

5

LD_LIBRARY_PATH

Hệ thống Unix có trình liên kết động, chứa danh sách thư mục được phân tách bằng dấu hai chấm mà trình liên kết động sẽ tìm kiếm các đối tượng được chia sẻ khi xây dựng hình ảnh quy trình sau khi thực thi, trước khi tìm kiếm trong bất kỳ thư mục nào khác.

6

PATH

Cho biết đường dẫn tìm kiếm lệnh. Nó là một danh sách các thư mục được phân tách bằng dấu hai chấm trong đó shell tìm kiếm các lệnh.

7

PWD

Cho biết thư mục làm việc hiện tại được đặt bởi lệnh cd.

số 8

RANDOM

Tạo một số nguyên ngẫu nhiên từ 0 đến 32,767 mỗi khi nó được tham chiếu.

9

SHLVL

Số lần tăng lên mỗi khi một phiên bản bash được bắt đầu. Biến này hữu ích để xác định xem lệnh thoát tích hợp có kết thúc phiên hiện tại hay không.

10

TERM

Đề cập đến kiểu hiển thị.

11

TZ

Đề cập đến múi giờ. Nó có thể nhận các giá trị như GMT, AST, v.v.

12

UID

Mở rộng tới ID người dùng số của người dùng hiện tại, được khởi tạo khi khởi động trình bao.

Sau đây là ví dụ mẫu hiển thị một số 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
$