2008-12-07 8 views
6

Vì vậy, tôi đang gặp sự cố đường dẫn trên OS X Leopard. Có vẻ như OS X đang thêm các đường dẫn khác mà tôi không nói và nó gây rối với ưu tiên đường dẫn của tôi. Tôi chỉ có một tệp .bash_login, tôi không có tệp .bashrc hoặc tệp .profile. tập tin .bash_login của tôi là như vậy:Các tệp khác nhau có thể có khai báo PATH cho OS X Terminal trong chúng là gì?

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

Khi tôi chạy xuất khẩu đây là con đường nó sẽ trả về:

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin" 

Bất kỳ ý tưởng về những gì có thể được đặt/usr/bin trong đó và làm thế nào tôi có thể nhận được /usr/local/bin là ưu tiên cao hơn.

Tôi đang gắn thẻ này cho Rails quá vì đó là những gì tôi đang làm việc ngay bây giờ ... có vẻ như Mac được xây dựng trong Ruby, Rails và Gems được ưu tiên hơn cái tôi đã cài đặt tại /usr/local/bin, hình như có thể các bạn Rubyists cũng có thể giúp bạn.

Trả lời

17

Các bạn đã nhìn vào bên trong hai thư mục này:

/etc/paths.d/ 
/etc/manpaths.d 

Bất kỳ đường dẫn được định nghĩa trong tập tin trong thư mục đó được tự động thêm vào biến PATH - Tôi chủ yếu sử dụng những hai thư mục đặt bên thứ ba ứng dụng được cài đặt trong CON ĐƯỜNG. Ngoài ra, tôi có một cái nhìn tại các trang người đàn ông của path_helper trên OS X.

EDIT: Nhìn vào các nội dung của /etc/profile, tôi có thể thấy rằng path_helper được thực hiện đầu tiên. Trang người dùng cho path_helper cho biết rằng trước khi đọc tệp trong các thư mục /etc/paths.d//etc/manpaths.d/, path_helper đọc và thiết lập đường dẫn được xác định trong các tệp /etc/paths/etc/manpaths. Một cái nhìn tại /etc/paths tiết lộ này:

$ cat /etc/paths 
/usr/bin 
/bin 
/usr/sbin 
/sbin 
/usr/local/bin 

Và, tôi tin rằng, những tài khoản cho một nửa của những gì bạn đang nhìn thấy như quy định trong PATH.

+0

Cảm ơn ayaz, ít nhất là đã nói với tôi rằng đường dẫn X11 và git đã được thêm vào đó như thế nào. Vẫn đang săn lùng những món đồ khác. –

+0

@Tim K: Bản chỉnh sửa trả lời của tôi những gì tôi tin là tài khoản cho các mục khác. – ayaz

+0

tuyệt vời! cảm ơn bạn rất nhiều! –

4

Dường như các thay đổi của bạn không được áp dụng. Lưu ý không/usr/local/mysql/bin

Đọc phần manpage bash trên INVOCATION, .bash_login chỉ được đọc nếu đó là trình bao đăng nhập - mà trình bao đầu cuối không có. Bạn cần phải đặt nó vào ~/.bashrc thay thế. Nó sẽ được đọc cho các đăng nhập và các shell không đăng nhập.

+0

+1 chưa có hoạt động - nhưng trang hướng dẫn tôi cảm ơn Brian. Tôi tự hỏi nếu một logoff hoàn chỉnh là cần thiết cho bashrc để tải? –

+0

bạn đã thử "source .bashrc" vì lệnh này sẽ thoát tập tin đó – Lodle

0

Tôi cũng đã đi qua một bài viết thú vị trên các diễn đàn hỗ trợ của Apple:

.bash_login no longer executed

Với những thông tin mà tôi tìm thấy một tập tin bị bỏ trống .bash_profile rằng tôi đã có đó là tải - và giết chết tất cả các thông tin tôi đã cố gắng để đặt trong con đường của tôi.

Vì vậy, tôi đoán có vẻ như chúng tôi có thể có một số câu trả lời "chính xác" tùy thuộc vào tình huống.

+0

Điều tôi làm là quăng tất cả các công cụ khởi tạo BASH người dùng cụ thể trong ~/.bashrc và đặt một dòng trong ~/.bash_profile vào nguồn ~/.bashrc. – ayaz

0

Chỉ cần đặt trong .bashrc hoặc .login và bạn sẽ bị phạt

1

Bạn cũng có thể đặt công cụ vào ~/.MacOSX/Môi trường.plist, như được nêu chi tiết tại https://web.archive.org/web/20150330034300/http://www.astro.washington.edu/users/rowen/AquaEnvVar.html

Điều này sẽ làm cho Biến môi trường có sẵn cho tất cả các ứng dụng, không chỉ những biến được bắt đầu thông qua phiên đầu cuối (bash).

(Có vẻ như bây giờ cũng có đề xuất tốt hơn)

+0

xin lỗi, di chuyển tài nguyên .... – maycca