Dòng PATH xuất trong .bashrc làm gì?


9

Tôi không thích Linux và tôi có nghi ngờ sau khi làm theo hướng dẫn.

Tôi phải sửa đổi bashrctập tin. Những loại cài đặt được chứa trong tập tin này? Tôi nghĩ một cái gì đó liên quan đến môi trường bash shell nhưng tôi không chắc lắm về nó.

Tôi phải chèn dòng này:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

Chính xác thì dòng này là gì?

Tôi nghĩ rằng exporttuyên bố đó được sử dụng để tạo ra một biến mới làm cho nó có sẵn cho chương trình khác.

Nhưng chính xác những gì dòng này? Là PATHtên của biến mà tôi đang xác định? Là $HOME

Gì có nghĩa là :biểu tượng giữa PATH=$HOME/.local/bin$HOME/.local/usr/bin$PATHphần trong biểu thức trước đó?

Chính xác thì biểu hiện này có ý nghĩa gì?


Các: giữa các mục là dấu phân cách cho từng phân khúc. Không có nó, con đường của bạn sẽ chạy liên tục và không hoạt động.
Terrance

Trong Ubuntu, loại PATHsửa đổi này đã được thực hiện trong ~/.profiletệp, do đó không phù hợp để thực hiện các công cụ tương tự ~/.bashrc. IMO tốt hơn để sửa đổi mã đã có ~/.profilenếu cần. Hiện tại ~/.profiletệp mặc định bao gồm dòng này:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson

@GunnarHjalmarsson: Có một số tình huống làm cho .profile và .bashrc khác nhau. Tệp .profile được phân tích cú pháp bằng shell đăng nhập chứ không phải bởi các lớp con. Nhưng vì dù sao bạn cũng cần phải đăng nhập để bắt đầu một subshell, điều này là ổn vì các subshells sẽ kế thừa $ PATH. Tệp .bashrc sẽ không được phân tích cú pháp bởi shell đăng nhập mà sẽ được phân tích cú pháp bởi các lớp con. Sự khác biệt xuất hiện khi bạn có một số nội dung không phải là con của trình đăng nhập (có thể là một tập lệnh tự động hóa ưa thích gọi các tập lệnh khác như git commit hook) - mọi thứ trong .profile sẽ không được đọc nên chúng sẽ bị bỏ qua
slebetman

@slebetman: Phải, và trong trường hợp máy tính để bàn có một sự khác biệt khác mà bạn không đề cập: Không giống như ~/.bashrc, ~/.profilecó nguồn gốc từ trình quản lý hiển thị, do đó, chỉ có các biến được đặt ~/.profilekhi bạn khởi động chương trình từ môi trường đồ họa. Và điều đó xảy ra sớm vì vậy sẽ ổn cho các quy trình tự khởi động cho phiên.
Gunnar Hjalmarsson

Câu trả lời:


16

Để tóm tắt lại tất cả mọi thứ được đề cập trong câu hỏi này,

các exportphần

Các exportphương tiện đường mà biến mà bạn khai báo sau đó sẽ có thể truy cập đến tiến trình con. Nói cách khác, các quy trình sẽ có thể truy cập vào biến được khai báo sau exporttừ khóa thông qua môi trường của shell. Vì vậy, nếu bạn đã làm một cái gì đó như export FOO="BAR"và sau đó có nguồn gốc các thay đổi trong môi trường shell của bạn, bạn có thể nhập $FOOvà nhận BAR.

các PATHphần

Đường dẫn đúng như bạn đã nói: nó khai báo một biến được đặt tên PATHcho môi trường shell. Trong môi trường bash, PATHcó một mục đích đặc biệt là xác định nơi máy tính tìm chương trình. Điều này cho phép bạn gõ các lệnh tùy chỉnh cho các tập lệnh mà không cần nhập toàn bộ thư mục. Lưu ý rằng PATH được đánh dấu để xuất theo mặc định, vì vậy dòng này không phải viết lại. Nó không đau, mặc dù.

Các $HOMEtrong PATHbiến

Ở đầu đường dẫn được gán cho PATHbiến, $HOMEđược khai báo. Điều này có nghĩa là máy tính sẽ lấy khá nhiều giá trị được lưu trữ HOMEvà sao chép-dán nó trước phần còn lại của dòng khi đọc nó.

:giữa cả hai con đường

Các :tương đương với một dấu phẩy trong câu. Nó chỉ tách ba thư mục. Không có ba thư mục đó, bàn điều khiển sẽ không nhận ra các lệnh mà nó nhận được. Ba vị trí đó là ba thư mục được sử dụng phổ biến nhất cho các tập lệnh / tập lệnh sẽ được lưu trữ và do đó thiết bị đầu cuối có thể truy cập mà không cần phải ghi ra đường dẫn đầy đủ đến tập tin.


Câu trả lời chính xác! "Dòng xuất có nghĩa là biến mà bạn khai báo sau nó sẽ có thể truy cập được đối với các tiến trình con" là cha mẹ cho các con này xử lý thiết bị đầu cuối từ nơi tôi sẽ chạy lệnh?
vadasambar

5

Các PATHbiến cho phép bash biết được nơi để tìm kiếm các chương trình thực thi, vì vậy nếu bạn có một kịch bản hay một số tập tin thực thi khác trong $HOME/.local/bin, sửa đổi PATHsẽ cho phép bạn gõ và chạy tập tin đó giống như bạn làm với lshoặc df.

exportchỉ có nghĩa là làm cho PATHbiến đó cũng có sẵn cho các chương trình khác mà bạn chạy từ bash.

Đối với : , nó chỉ là một dấu phân cách cho mỗi thư mục. Nó giống như dấu phẩy trong danh sách các từ, không có gì hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.