Làm cách nào để sử dụng /etc/paths.d để thêm tệp thực thi vào đường dẫn của tôi?


15

Tôi đang cố gắng sử dụng /etc/paths.d để thêm một tệp thực thi vào biến đường dẫn của tôi nhưng cho đến nay tôi không có thành công.

Đường dẫn đầy đủ của tệp thực thi là: /opt/ImageMagick/bin/convert

/etc/paths.d chứa hai tệp: 40-XQuartz và ImageMagick

40-XQuartz chứa một dòng: /opt/X11/bin
ImageMagick chứa một dòng:/opt/ImageMagick/bin

Của tôi echo $PATHcho:

/Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Vì vậy, dường như chỉ có tệp đầu tiên (40-XQuartz) thực hiện công việc của mình. Các quyền của hai tệp (40-XQuartz và ImageMagick) hoàn toàn giống nhau vì vậy câu hỏi của tôi là tại sao tệp đầu tiên hoạt động còn tệp thứ hai thì không.

Tôi đang chạy OS X Mavericks.


Bạn dùng vỏ gì? Những gì về / etc / đường dẫn?
Max Ried

Thêm cứng để /etc/paths.dhoạt động với tôi, nhưng tôi khởi động lại bất kỳ ứng dụng đầu cuối nào tôi đang sử dụng (ITerm2 trong trường hợp của tôi) để đường dẫn mới có hiệu lực
user1256923

Câu trả lời:


17

Bạn đã bắt đầu một vỏ đăng nhập mới kể từ khi thêm tệp mới cho ImageMagick chưa? Việc thiết lập đường dẫn từ paths.dcác mục được thực hiện trong /etc/profile/etc/csh.loginvì vậy bạn cần bắt đầu một trình bao mới để các mục mới có hiệu lực.

OS X sử dụng path_helperđể đặt đường dẫn dựa trên các tệp trong /etc/paths.d- bạn luôn có thể gọi nó theo cách thủ công (giả sử trình bao giống như Bourne ở đây):

$ eval `/usr/libexec/path_helper -s`

Tất nhiên tôi đã bắt đầu một shell mới. Tôi thậm chí đã khởi động lại máy mac của mình.
skiabox

shell đăng nhập mới làm việc cho tôi
incandescentman

3

Đang chạy

echo /opt/ImageMagick/bin|sudo tee /etc/paths.d/ImageMagick;bash -l;echo $PATH

cho biết thêm /opt/ImageMagick/binđể PATHvào cài đặt của tôi.

Bạn đang ghi đè PATHở một số nơi khác như thế ~/.bash_profilenào?

Các đường dẫn trong /etc/paths.d/được thêm vào đường dẫn bằng /usr/libexec/path_helper, được điều hành từ /etc/profile, /etc/zsh.env/etc/csh.login. path_helperkhông được chạy bởi các ứng dụng đồ họa hoặc khi bash được gọi dưới dạng shell không đăng nhập.

Bạn cũng có thể đặt mặc định PATHtrong /etc/launchd.conf:

  1. Chạy chẳng hạn setenv PATH /Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/ImageMagick/bin|sudo tee -a /etc/launchd.conf.
  2. Hoặc khởi động lại, hoặc chạy launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confvà khởi chạy lại các quy trình.

Tôi thích thay đổi đường dẫn trong /etc/launchd.conf, bởi vì nó cũng ảnh hưởng đến các chương trình không được bắt đầu từ shell, như trình soạn thảo văn bản và chương trình được bắt đầu bởi các công việc launchd.


0

Thật tuyệt vời, tôi chỉ chơi xung quanh với việc thêm ImageMagic vào máy Mac của mình. Bạn không chỉ cần ImageMagick/bintrong bạn PATH, bạn cũng cần một bộ biến môi trường hoặc được thêm vào:

Để kiểm tra, bạn có thể tạo thủ công bằng:

export DYLD_LIBRARY=".:/opt/ImageMagic/lib"

Thông tin để đặt biến môi trường cho Mac OS có thể tìm thấy ở đây, Đặt biến môi trường trong OS X?

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.