Làm cách nào để đặt lại biến $ PATH trên Mac OS X?


17

Tôi đã làm rối biến số đường dẫn của mình và bây giờ một số ứng dụng mà tôi chạy phát sinh lỗi cho biết Lệnh Không tìm thấy (lỗi 127) cho các lệnh như ngày và giờ ngủ . Các lệnh này hoạt động tốt khi được thực hiện trực tiếp trong shell.

Tôi đoán điều này có liên quan đến biến $ PATH không đúng định dạng và cần biết cách đặt lại nó. Tôi đã xóa các tệp ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc~ / .bashrc~ / .profile .

Những tập tin nào khác có thể giữ $ PATH của tôi ? Có cách nào đơn giản hơn để đặt lại Đường dẫn hơn là đào sâu vào vô số tệp có thể giữ đường dẫn của tôi không?

Lưu ý, vấn đề đường dẫn này chỉ với người dùng của tôi. Tôi đã tạo một người dùng thử nghiệm trên hệ thống của mình và đường dẫn vẫn ổn, trở lại bình thường.

CẬP NHẬT: Cảm ơn. Tôi không biết một trong những tập tin tôi đã xóa, nhưng mọi thứ đang hoạt động trở lại. Các bạn đã làm những gì mà 'Chuyên gia' không thể. Và vâng, Chris, bạn đã đúng. Các tùy chỉnh PATH mà tôi đã thực hiện là trong bash_login. Nhưng bằng cách nào đó nó hoạt động mà không cần tôi xóa những tùy chỉnh đó. Tôi nghĩ rằng đó có thể là vì tôi đã sử dụng prefpane này được gọi là 'RCEn Môi trường', và tôi đã đi vào một con đường có dấu ngoặc kép và: PATH trong đó. Tôi không biết liệu nó có trích dẫn hay không và nó không thay thế: $ PATH, vì vậy đó có thể là nguyên nhân của lỗi. Tôi quên tôi thậm chí đã có prefpane đó!


1
/ etc / profile là nơi có nhiều khả năng nhất để cài đặt các giá trị ban đầu cho PATH, nhưng một cái gì đó ở đó sẽ ảnh hưởng đến tất cả người dùng. Ngoài ra còn có ~ / .bash_login mà bạn không liệt kê (mặc dù bạn có thể đã loại bỏ nó).
Chris Johnsen

Câu trả lời:


19

Nếu bạn có tệp ~ / .MacOSX / môi trường.plist, hãy kiểm tra xem nó có cung cấp giá trị PATH mặc định không.

Nếu nó ở định dạng XML (có thể có nhiều định dạng), bạn có thể chỉnh sửa với bất kỳ trình soạn thảo văn bản nào. Kiểm tra nó với plutil -lint ~/.MacOSX/environment.plistnếu bạn chỉnh sửa nó bằng tay.

Hoặc, bạn có thể sử dụng các lệnh như mặc định hoặc PlistBuddy để thực hiện các sửa đổi được kiểm soát đối với các tệp plist XML hoặc định dạng nhị phân.


Bạn luôn có thể đặt PATH của riêng mình trong bất kỳ tệp khởi tạo nào của shell.

Đặt một cái gì đó như sau vào tệp khởi động của trình bao của bạn ( .bashrchoặc .bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

Điều đó sẽ ghi đè bất cứ PATH mặc định nào được đặt khi shell bắt đầu (cái đầu tiên PATH=không sử dụng $PATH, vì vậy nó sẽ luôn bắt đầu chỉ với bất cứ thứ gì bạn cung cấp cho nó).

Chỉ có một trong các file 'đăng nhập' sẽ bao giờ được sử dụng (một trong những đầu tiên mà tồn tại và có thể đọc được của ~/.bash_profile, ~/.bash_login~/.profilesẽ được sử dụng). .profilelà để tương thích ngược với các shell khác, nếu bạn sử dụng nó, hãy chắc chắn giữ cho nó không có cú pháp dành riêng cho bash . Nếu bạn đi với .bash_loginhoặc .bash_profile(chúng tương đương về chức năng ngoại trừ tên), thì hãy sử dụng một dòng như [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]gần đầu để các vỏ đăng nhập cũng sẽ nhận được các tùy chỉnh được thực hiện trong của bạn .bashrc.

Nếu bạn muốn tất cả các trường hợp bash có cùng một PATH, thì hãy sử dụng .bashrc. Nếu bạn thường thấy mình tương tác sửa đổi PATH của một vỏ từ dòng lệnh và muốn sử dụng PATH đã sửa đổi đó trong các ô con (một trường hợp có thể không phổ biến lắm), thì bạn nên đặt các câu lệnh vào một trong các tệp 'đăng nhập' . Chỉ chọn một trong các tệp đăng nhập và sử dụng nó.


8

1.Mở thiết bị đầu cuối của bạn

2. Trước tiên, bạn chỉ có thể kiểm tra hiện tại của bạn $PATH, gõ

tiếng vang $ PATH

đến ga cuối

3. Nếu $PATHthiết bị đầu cuối đó trả lại là con đường bạn muốn, thì bạn tốt; nếu không, gõ

xuất PATH = / usr / bin: / bin: / usr / sbin: / sbin

, sau đó gõ

chạm ~ / .bash_profile

và sau đó gõ

mở ~ / .bash_profile

, sau đó bạn sẽ tìm thấy một EditText mở ra, bây giờ hãy nhập đường dẫn bạn muốn trong EditText đó; Chẳng hạn, gõ

PATH = / usr / bin: / bin: / usr / sbin: / sbin

(là mặc định $PATHcho mac, xem xét bạn muốn đặt lại $PATHvì vậy có lẽ bạn nên nhập cái này), lưu nó và sau đó đóng EditText, sau đó đóng Terminal.

4.Bây giờ bạn đã thay đổi $PATHhoặc đặt lại về mặc định của mac $PATH!


2
Tôi cảm thấy có rất nhiều ở trên mà không có hiệu lực. Tại sao bạn nghĩ touchlà bắt buộc? Ngoài ra, vì dù sao bạn cũng đang đóng Terminal, tại sao lại chạy exportdòng lệnh, thay vì chỉ thêm nó vào ~/.bash_profile(cũng cần export) và được thực hiện với nó? (Hoặc, chạy source ~/.bash_profileđể áp dụng các thay đổi cho cửa sổ hiện tại.)
Arjan

Đúng, một số trong đó là dư thừa. Lưu bất cứ giá trị PATH nào vào .bash_profile sẽ làm.
ThinkCode

1

Các rc/profilechỉnh sửa của Chris Johnson được hiển thị cũng hoạt động tốt trong /etc/profile.

Tôi vừa nối:

export PATH="/usr/local/mariadb/bin:$PATH"

vào /etc/profiletệp của tôi trong Mac OS X 10.9 Mavericks để hoàn tất cài đặt MariaDB (hoạt động như một sự thay thế tuyệt vời cho MySQL).


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.