2012-12-20 41 views
13

Tôi không thể tin rằng không có bất kỳ hướng dẫn nào về vấn đề này sau khi googling. Ai đó có thể chỉ cho tôi một hướng hoặc giải thích ý nghĩa của các dòng và biến này trong .profile trên mac? Làm thế nào ai đó có thể cấu hình chúng?Đường dẫn xuất trong .profile on mac

export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
# Finished adapting your PATH environment variable for use with MacPorts. 
#export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 
export PATH=$PATH:/usr/local/mysql/bin 
#export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 
#export PATH=/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:/Applications/MAMP/htdocs/cake/cake/console:/opt/local/bin:/opt/local/sbin:$PATH 
export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH 
export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH 

Trả lời

36

dòng Bất kỳ bắt đầu với # là một bình luận. PATH= đặt giá trị của biến số PATH, $ PATH mở rộng thành giá trị hiện tại và export ở đầu làm cho giá trị có sẵn cho các chương trình mà bạn chạy từ thiết bị đầu cuối.

Giả sử giá trị ban đầu của PATH là /usr/bin:/bin.

export PATH=/opt/local/bin:/opt/local/sbin:$PATH 

Thay thế $PATH bằng giá trị trước đó của $ PATH. Vì vậy, các bộ trên PATH để

/opt/local/bin:/opt/local/sbin:/usr/bin:/bin 

Di chuyển về phía trước,

export PATH=$PATH:/usr/local/mysql/bin 

Một lần nữa, thay thế $ PATH với giá trị trước đó:

/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin 

Sau

export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH 

chúng tôi có

/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin 

(Các ~ là một dấu hiệu đặc biệt mà sẽ được thay thế bằng đường dẫn đến thư mục home của bạn, nhưng bạn sẽ nhận được hình ảnh.)

Và cuối cùng, sau khi

export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH 

chúng tôi nhận được

/Users/android-sdks/platform-tools:/Users/android-sdks/tools:/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin 

PATH được sử dụng để tìm các lệnh bạn nhập vào dấu phẩy và dòng.Vì vậy, nếu bạn gõ foo, vỏ sẽ tìm kiếm những cái tên dưới đây, theo thứ tự quy định:

/Users/android-sdks/platform-tools/foo 
/Users/android-sdks/tools/foo 
/android-sdks/platform-tools/foo 
~/android-sdks/tools/foo 
/opt/local/bin/foo 
/opt/local/sbin/foo 
/usr/bin/foo 
/bin/foo 
/usr/local/mysql/bin/foo 

Để xem giá trị hiện tại của PATH, chạy

echo $PATH 

bạn nên thêm thư mục mới đến đầu của PATH hoặc đến cuối? Nó không phải luôn luôn quan trọng, nhưng đôi khi nó. Nó phụ thuộc vào vị trí bạn muốn hệ thống kiểm tra trước.

Bạn nên thêm vào đầu nếu mục tiêu là tìm kiếm các thư mục khác trước khi tìm kiếm các thư mục mặc định. Ví dụ: git là một tiện ích được sử dụng để quản lý mã nguồn. Nếu tôi muốn cài đặt một phiên bản mới hơn của git trong ~/git và sử dụng rằng theo mặc định, anh sẽ làm:

export PATH=~/git/bin:$PATH 

này có nghĩa là ~/git/bin/git sẽ ghi đè/opt/local/bin/git.

Mặt khác, tôi có thể muốn quản trị viên cài đặt git toàn hệ thống. Nếu tôi muốn sử dụng bản sao địa phương của tôi chỉ cho đến khi người quản trị làm cho nó có sẵn cho tất cả mọi người, thì điều này có ý nghĩa hơn:

export PATH=$PATH:~/git/bin 

Trong trường hợp này ~/git/bin/git sẽ chỉ được sử dụng nếu /opt/local/bin/git không đã tồn tại kể từ khi /opt/local/bin trước đó trong đường dẫn.

Rất nhiều lệnh sẽ không tồn tại ở nhiều nơi. Ví dụ: bạn có thể viết my-backup-script và đặt nó trên Apple Time Capsule tại /Volumes/Capsule/scripts. Nó không có khả năng sẽ có một lệnh gọi là my-backup-script ở bất kỳ vị trí nào khác để xung đột. Vì vậy, một trong các lệnh sau đây sẽ cho phép bạn gõ my-backup-script và chạy kịch bản phải:

export PATH=/Volumes/Capsule/scripts:$PATH 

hoặc

export PATH=$PATH:/Volumes/Capsule/scripts 

Là một tốt hơn? Lời khuyên của tôi là làm điều sau. Hãy nhớ rằng hệ thống sẽ cần phải tìm kiếm các thư mục trong $PATH, theo thứ tự, cho mọi lệnh mà nó cần tìm. Hầu hết các lệnh sẽ được trên hệ thống cục bộ, do đó, nó có ý nghĩa nhất để đặt bộ nhớ mạng chậm hơn ở cuối đường dẫn.

+0

Vậy tại sao một số người lại thêm vào $ PATH khi rõ ràng bạn nên thêm tiền? – Pacerier

+0

Bạn nên thêm vào trước nếu mục tiêu là tìm kiếm một thư mục cụ thể trước khi tìm kiếm các địa điểm còn lại được đề cập trong 'PATH'. Nếu ai đó chọn nối thêm, họ có thể có các mục tiêu khác nhau. Cập nhật câu trả lời với một số chi tiết. – GargantuChet

7

Từ man page, export chỉ cần đặt biến môi trường.

Biến môi trường PATH cho máy Mac biết nơi tìm kiếm các lệnh bạn nhập trên dòng lệnh, theo thứ tự cần xem. Nó là một danh sách các đường dẫn, được phân tách bằng dấu hai chấm.

Giá trị $PATH là giá trị hiện tại của biến môi trường PATH.

Do đó, một dòng như

export PATH=/foo:$PATH 

prepends /foo đến PATH

export PATH=$PATH:/foo 

gắn /foo đến PATH

0

Run man

Và sau đó trả lời các câu hỏi như export

Bạn có thể thấy giá trị hiện tại PATH và quan sát rằng có nhiều hơn một con đường hiện tại.

(mỏ là /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin)

Quan sát rằng : đại diện cuối của một con đường duy nhất.

Bạn có thể lấy điều này bằng cách sử dụng $PATH

Bây giờ khi bạn muốn thêm một con đường thêm vào danh sách này thì bạn cần phải thêm đường dẫn hiện tại để con đường mới như /newPath:$PATH hoặc $PATH:/newPath.

Và cuối cùng để lưu, bạn cần sử dụng export PATH=$PATH:/newPath.

Lưu ý: Câu trả lời này dành cho nhà phát triển mới làm quen.

Các vấn đề liên quan