Câu hỏi Thêm một mục mới vào biến PATH trong ZSH


Tôi đang sử dụng zsh và tôi đang cố thêm một mục mới (/home/david/pear/bin) đến PATH biến nhưng tôi không biết làm thế nào.

Điều khiến tôi bối rối nhất là không có một tham chiếu đến PATH biến trong của tôi ~/.zshrc tập tin, nhưng đang làm echo $PATH trả về:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Vì vậy, một PATH biến đang được đặt ở đâu đó.


76
2017-07-17 20:07


gốc




Các câu trả lời:


Đây:

export PATH=/home/david/pear/bin:$PATH

87
2017-07-17 20:15



Cảm ơn, nó hoạt động, nhưng PATH không được sửa đổi vĩnh viễn. Nếu tôi đóng thiết bị đầu cuối và mở lại, tôi phải đặt lại PATH một cách thủ công. Bạn có biết cách thực hiện thay đổi này vĩnh viễn không? - David Barreto
haha quên nó, tôi mặc dù đó chỉ là một lệnh giao diện điều khiển nhưng thêm dòng đó để .zshrc đã làm các trick. Cảm ơn rất nhiều! - David Barreto
Tôi phải xóa dấu ngoặc kép xung quanh các mục nhập tức là PATH="/home/david/pear/bin:/usr/bin:etc" đến PATH=/home/david/pear/bin:/usr/bin:etc để nó ở trong zshrc. - a7omiton
@taco: Tôi khá chắc chắn rằng đó là vì ~ được mở rộng bởi trình bao, và các đường dẫn trong PATH chỉ được nhìn thấy bởi các cuộc gọi hệ thống tệp mức thấp hơn. - Linuxios
@taco, bạn có thể sử dụng $ HOME - mencargo


Trên thực tế, việc sử dụng ZSH cho phép bạn sử dụng ánh xạ đặc biệt của các biến môi trường. Vì vậy, bạn có thể chỉ cần làm:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

Đối với tôi đó là một tính năng rất gọn gàng có thể được truyền bá sang các biến khác. Thí dụ:

typeset -T LD_LIBRARY_PATH ld_library_path :

88
2017-08-06 10:41



Câu trả lời hay. Trong trường hợp của tôi, ~/.zshrc có nguồn gốc sau .profilevà ghi đè mọi thứ trong .profile. Mất một lúc để kéo tóc tôi ra. - Khanh Nguyen
Trường hợp chắp thêm không cần các dấu trừ trừ khi bạn đang thêm nhiều hơn một phần tử. Nó cũng thường không cần dấu ngoặc kép. Vì vậy, cách đơn giản, ngắn gọn để nối thêm là - Micah Elliott
nó là giải đấu? - SuperUberDuper
@SuperUberDuper, bạn nên hiểu rằng hầu như bất kỳ trình bao unix nào cũng chỉ đọc các tệp khởi động mà gần như giống như khi bạn nhập nó vào trong vỏ tương tác. Về các tệp "rc", bạn có thể tìm thấy câu trả lời thú vị cho câu hỏi này - ony
Có thể tránh xuất khẩu rõ ràng với -x và chỉ để lại các giá trị duy nhất trong một biến với -U, dấu hai chấm được giả định theo mặc định, do đó, nó có thể là: typeset -TUx PATH path - Grief


Bạn có thể gắn thêm vào PATH trong một thời trang tối thiểu. Không cần dấu ngoặc đơn trừ khi bạn đang thêm nhiều hơn một phần tử. Nó cũng thường không cần báo giá. Vì thế cách đơn giản, ngắn gọn để nối thêm Là:

path+=/some/new/bin/dir

Sử dụng phổ biến

Sau đó, mẫu phổ biến để thử nghiệm một tập lệnh / thực thi mới sẽ trở thành:

path+=$PWD/.
# or
path+=$PWD/bin

Cú pháp chữ thường này đang sử dụng path như một mảng, mà còn ảnh hưởng đến tương đương đối tác phía trên, PATH (mà nó là "bị ràng buộc" qua typeset).

(Thông báo rằng Không : là cần thiết / muốn làm dấu phân tách.)

Tidbits liên quan

Điều trị path cách này (như một mảng) cũng có nghĩa là: không cần phải làm rehash để tìm các lệnh mới được tìm thấy.

Ngoài ra hãy xem vared path như một cách năng động để chỉnh sửa path và những thứ khác.

Bạn chỉ có thể quan tâm path cho câu hỏi này, nhưng vì chúng ta đang nói về xuất khẩu và mảng, lưu ý rằng mảng thường không thể xuất được.

Bạn có thể ngăn chặn PATH lấy các mục trùng lặp (tham khảo điều nàyđiều này):

typeset -U path

10
2018-06-11 22:11



Nó không phải là 'path + =: / foo / bar'? (có dấu hai chấm) - andrew lorien
@andrewlorien Tôi đã cập nhật câu trả lời với các chi tiết về dấu phân cách dấu hai chấm. - Micah Elliott
Ồ cảm ơn nhé. Tôi không biết về đường dẫn / PATH trong zsh. - andrew lorien


một lớp lót, không mở ~/.zshrc tập tin

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

hoặc là

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

Để xem hiệu ứng, hãy làm source ~/.zshrc trong cùng một tab hoặc mở một tab mới


7
2017-12-13 14:26



Làm việc perfecly trên OSX với vỏ Zsh. - Stryker


LỰA CHỌN 1: Thêm dòng này vào ~ / .zshrc:

export "PATH=$HOME/pear/bin:$PATH"

Sau đó bạn cần chạy nguồn ~/.zshrc để các thay đổi của bạn có hiệu lực HOẶC đóng cửa sổ này và mở một cửa sổ mới

LỰA CHỌN 2: thực hiện nó bên trong bảng điều khiển đầu cuối để thêm đường dẫn này chỉ vào phiên cửa sổ đầu cuối hiện tại. Khi bạn đóng cửa sổ / phiên, nó sẽ bị mất.


0
2018-05-08 12:12