Nâng cấp RVM và bây giờ PATH bị hỏng


1

Của tôi PATH không còn bao gồm /usr/local/bin mặc dù nó là dòng đầu tiên của /etc/paths:

#/etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

$ PATH:

$ echo $PATH
/usr/bin:/bin:/Users/meltemi/.rvm/bin

Những gì đã thay đổi? Vâng tất cả đã hoạt động tốt cho đến khi:

RVM được cập nhật gần đây từ 1.24.8 - & gt; 1.25.13 trên máy OS X 10.9.1 với rvm get stable

RVM cảnh báo tôi rằng có "đồ cũ nằm xung quanh" và để chạy rvm cleanup all, Tôi cũng vậy.

Sau đó, tôi đã nâng cấp Ruby rvm upgrade 2.0.0-p353 2.1 di chuyển đá quý trên đường đi ...

Chỉnh sửa:

Tôi đang sử dụng zsh:

#~/.zshrc
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh
...
source $ZSH/oh-my-zsh.sh

# load RVM
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" 

## from brew info zsh
#Add the following to your zshrc to access the online help:
unalias run-help
autoload run-help
HELPDIR=/usr/local/share/zsh/helpfiles

1
Bạn đang sử dụng bash hoặc zsh hoặc shell khác? Bạn đã kiểm tra các tệp loại .profile để tìm lỗi cú pháp đang ngăn chặn / etc / path khỏi nguồn gốc chưa? PATH = foo với foo không chứa $ PATH có sẵn sẽ là thứ đáng để theo dõi.
bmike

Tôi đang sử dụng zsh và tôi không thấy bất kỳ lỗi rõ ràng nào trong .zshrc (xem chỉnh sửa ở trên)
Meltemi

Tốt - chỉ có ba nơi bạn có thể gặp vấn đề. Hệ thống, rvm hoặc oh-my-zsh. Câu trả lời của tôi có thể giúp biết được đó là hệ thống hay một trong hai bổ sung bạn đang chạy.
bmike

Câu trả lời:


2

Đây không phải là vấn đề với rvm, nhưng với homebrew:

Kể từ ngày 15 tháng 12 năm 2013, zsh không còn được xây dựng với --enable-etcdir cờ theo mặc định. vì thế /usr/libexec/path_helper không còn được sử dụng để khởi tạo $PATH và tất cả các con đường trong /etc/paths cũng như trong /etc/paths.d hoàn toàn bị bỏ qua. (Tôi biết, tôi chỉ phát hiện ra bản thân mình và cũng không nói nên lời.)

Do đó, hoặc chạy brew update; brew reinstall zsh --enable-etcdir hoặc thêm những điều sau đây vào .zshrc:

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

Để biết thêm thông tin về lý do tại sao điều này đã được gỡ bỏ, kiểm tra này trên github.


0

Tôi không thể đoán vấn đề của bạn nằm ở đâu, nhưng đây là cách tôi sẽ khắc phục sự cố.

  1. đặt tệp .zshrc của bạn sang một bên mv ~/.zshrc ~/zshrc
  2. mở một cửa sổ terminal mới, chuyển sang bash
  3. kiểm tra đường dẫn (chỉ để xem nếu nó hiển thị bất kỳ thay đổi nào)
  4. chạy zsh trong chế độ dài dòng zsh -v

Theo dõi cẩn thận về đầu ra / usr / libexec / path_helper và xem xét việc chạy nó bằng tay để xem cách đường dẫn của bạn được lắp ráp.

Khi bạn có đường dẫn tốt, bạn có thể thêm lại một phần hoặc tất cả tệp .zshrc của mình và kiểm tra lại.


đã làm bước 1. mở một cửa sổ terminal mới (zsh) và sau đó gõ bash để chuyển đổi mang lại cho tôi một thế giới bị tổn thương với các ref thiếu, v.v. .zshrc và thiết bị đầu cuối zsh mới và bây giờ $ PATH thậm chí còn ngắn hơn: "/ usr / bin: / bin". Giống như nó không tham khảo etc/paths ở tất cả!?!
Meltemi

/usr/libexec/path_helper dường như là một tập tin nhị phân?!? không thể đọc được. bắt đầu nghĩ vấn đề này có thể ở cấp hệ thống. tại sao không /etc/paths được nguồn gốc?
Meltemi

Ồ - bạn chạy nó /usr/libexec/path_helper -s và nó phân tích các tệp khác nhau và tạo ra một đường dẫn được tạo cho bash trong trường hợp này. Xem trang người đàn ông để biết các tùy chọn ...
bmike
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.