$ PATH trong Vim không khớp với Terminal


10

Tôi đang sử dụng MacVim và khi tôi không khởi chạy nó từ Terminal ( mvim) thì $ PATH của nó không bao gồm những gì tôi đã đặt trong .bash_profile của mình. Nó dường như chỉ có các giá trị mặc định /usr/bin:/bin:/usr/sbin:/sbin,.

Tôi đang chạy OS X 10.5.8. Ngay cả khi tôi có thể đặt thủ công trong .vimrc của mình thì cũng không sao, mặc dù tôi vẫn thích nó kéo từ cùng một nơi với Terminal. Tôi đã thử làm theo những gì một trang web đề xuất, thêm let $PATH += /blah/foo:/bar/etcvào nhưng không có kết quả.

Chỉnh sửa / Giải pháp: Xem câu trả lời của tôi dưới đây. MacVim có một tùy chọn để khắc phục điều này.


Câu trả lời:


12

MacVim dường như nhận được $ PATH theo cách bỏ qua các dotfiles tùy chỉnh của người dùng thông thường.

Tôi không thể nói lý do tại sao họ thích làm theo cách này, nhưng nó có vẻ đúng. Trong các tùy chọn (trong tab Nâng cao), bạn có thể chọn "Khởi chạy các quy trình Vim trong vỏ đăng nhập", nhưng nó chỉ cải thiện $PATHđôi chút cho tôi.

Điều tốt nhất tôi có thể nói, MacVim sử dụng /usr/libexec/path_helper- lần lượt sử dụng các mục được tìm thấy (1) trong /etc/pathstệp và (2) mọi thứ bổ sung được tìm thấy trong /etc/paths.d/thư mục. Mọi thay đổi được thực hiện trong thư mục nhà của người dùng (thông qua .profilehoặc tương tự) đều bị bỏ qua.

Tóm lại, bạn nhận được mặc định OSX, cộng với bất kỳ ứng dụng nào tự thêm vào /etc/paths.d. (Ví dụ: MacTex làm như vậy trên hệ thống của tôi.) Vì vậy, nếu bạn muốn điều chỉnh đường dẫn MacVim của mình, một cách sẽ là thêm một tệp có các mục vào /etc/paths.d. (Tôi sẽ không trực tiếp chỉnh sửa /etc/pathskể từ đó bạn có nguy cơ thay đổi được hoàn tác bởi các bản cập nhật hệ thống.)

Cảm ơn đã cho tôi biết điều này. Tôi sẽ gửi một lỗi danh sách mong muốn tại MacVim.


Tôi cũng có thể nghĩ như vậy, nhưng tôi đã thêm một vài thứ '/etc/paths.d/' xuất hiện trong Terminal nhưng không phải với MacVim.
bánh rán

Và thực tế, có nhiều trong tệp '/ etc / path' của tôi hơn những gì trong đường dẫn của MacVim.
bánh rán

@Dovy: tốt, đó là số lẻ. Trên máy của tôi, nếu tôi thêm một cái gì đó vào /etc/paths.d, nó sẽ xuất hiện vào lần tiếp theo tôi khởi động MacVim. Định dạng nào bạn đặt trong đó? Nó nên là một mục trên mỗi dòng, tôi tin rằng, với thư mục $ PATH trên mỗi dòng (ví dụ: / usr / texbin).
Telemachus

Tôi hoàn toàn bỏ lỡ đoạn đầu tiên của bạn ban đầu: Việc chọn "Khởi chạy các quy trình Vim trong vỏ đăng nhập" đã thực hiện thủ thuật cho tôi. Xem câu trả lời của tôi.
bánh rán

7

BTW, tùy chọn "Khởi chạy Vim trong vỏ đăng nhập" không còn khả dụng trong MacVim (ít nhất là không phải v7.3). Tôi thấy rằng việc khởi chạy MacVim từ Finder tìm thấy đường dẫn sai, nhưng khởi chạy nó từ trình bao (vì "mvim") có đường dẫn chính xác.


3

Nó không có nguồn gốc từ .bash_profile, nhưng bạn có thể sử dụng điều này trong .vimrc:

let $PATH=$PATH . ':/blah/foo'

Bạn phải có: hoặc nó sẽ không phải là biến PATH chính xác.


Tôi mới thử nó và điều này dường như không thay đổi $ PATH cho MacVim. Tôi cũng đã thử nghiệm nó với Vim trong Terminal (cả hai /usr/bin/vim(từ Apple) và /opt/local/bin/vim(từ MacPorts), và có vẻ như không cần thiết Vim tại nhà ga đã nhặt $ PATH đúng như nguồn gốc của file chấm của tôi..
Telemachus

1
Tôi đã thử điều này là vô ích.
bánh rán

2

Tôi không thể tin rằng tôi đã không nhìn thấy điều này trước đây. Được rồi, tôi có thể tin được. Dù sao, MacVim đi kèm với một tùy chọn giải quyết điều này. Trong Tùy chọn, chỉ cần kiểm tra "Khởi chạy các quy trình Vim trong vỏ đăng nhập". Đó là nó, nó hoạt động. Ngạc nhiên. Ngốc tôi

Giáo sư

Tôi vô tình viết câu trả lời này mà không nhận ra rằng Telemachus đã cho tôi câu trả lời đúng . Đánh dấu của mình là câu trả lời.


Vui mừng vì nó đã được sắp xếp
Telemachus

1

Bài viết này của Mac Dev Center có thể được sử dụng.


Không thể làm cho nó hoạt động. Có thể làm điều gì đó sai. Bài viết đề xuất thêm thuộc tính 'LSEn Môi trường' trong 'tệp danh sách thuộc tính thông tin' của ứng dụng mà tôi giả sử là ~ / Library / Preferences / org.vim.MacVim.plist. Tôi đã biến nó thành một từ điển với 'PATH' (cũng đã thử 'path' và '$ PATH') làm khóa và những gì tôi muốn cho đường dẫn dưới dạng giá trị chuỗi. Dường như vẫn đang kéo PATH từ một nguồn bí ẩn nào đó. Ảnh chụp màn hình của tệp plist
donut

1

Tôi không có vấn đề gì khi thêm một tập tin vào thư mục path.d. Tôi đã thêm một tệp có tên mysql, có nội dung là:

/ usr / local / mysql / bin [Trả về]

Sau đó, tôi đặt tệp này trong thư mục path.d và thay đổi quyền sở hữu của nó thành root: wheel. Bây giờ thư mục mysql được tự động thêm vào biến $ PATH của tôi.

Tôi đã không điều tra đầy đủ, nhưng có thể (a) bao gồm [RETURN] ở cuối dòng và / hoặc (b) đặt quyền sở hữu tệp thành root, có thể là cần thiết.



1

Tôi chạy vào đây ngày hôm nay. MacVim không còn có tùy chọn "vỏ đăng nhập" và việc chỉnh sửa các tệp trên toàn hệ thống cho cài đặt dành riêng cho người dùng còn sơ sài.

Đây là một giải pháp chỉ sử dụng các tùy chọn vim (xem :help :!:help shell).

Trong ~/.vimrcdòng của bạn thêm

set shell=/bin/bash
set shellcmdflag=-l\ -c

Điều này làm cho bashshell mặc định của bạn từ (Mac) Vim và thêm -lcờ (shell đăng nhập) vào các lệnh được gọi với :!{cmd}. Khi thực thi :shell, bash được bắt đầu như một "vỏ tương tác không phải là vỏ đăng nhập".

Để thực hiện $PATHcông việc, bạn cần phải thiết lập nó ~/.bash_profilecho :!~/.bashrccho :shell. (Xem INVOCATIONtrong man bash)

CẬP NHẬT: Điều này không cần thiết trên máy tính khác của tôi, vì vậy có khả năng nguyên nhân khác là nguyên nhân gốc.


1
Bạn có thể làm một điều tương tự cho zsh. Xác định $PATHtrong .zprofile, và bao gồm các -llá cờ ở một trong hai set shellhoặc set shellcmdflag.
jladan

0

Tôi biết nhiều về unix hơn về mac, vì vậy những lời khuyên sau có thể có hoặc không hoạt động. Hãy thử đặt tệp .vimrc này của bạn:

! source ~/.bash_profile

Điều đó có thể thực hiện mánh khóe, nhưng có một cảnh báo nhỏ: .bash_profile chỉ có nghĩa là có nguồn gốc một lần. Nó có thể chứa một số lệnh không idempotent (những thứ chỉ nên thực hiện một lần). Trường hợp tại điểm:

$PATH += /blah/foo:/bar/etc

Càng được gọi nhiều, càng lớn và càng dư thừa $PATH. Tuy nhiên, nếu đó không phải là một vấn đề lớn, khuyến nghị về unix sẽ là đưa lệnh một lần vào ~/.bashrcvà chạy source ~/.bashrctừ .vimrctệp của bạn .


Cả nguồn .bash_profile hoặc .bashrc đều không hoạt động. Tôi đã thử chạy thủ công :source .bash_profilenhưng nó xuất hiện lỗi "Không phải lệnh biên tập" cho mọi lệnh trong tệp và tương tự với .bashrc.
bánh rán

xin lỗi ... tôi đã nghĩ gì ... bạn có thể thử! nguồn .bash_profile
David Berger

Đã thử cả .bash_profile và .bashrc nhưng vẫn không đi. Đây là những gì tôi đang sử dụng trong .bashrc: 'xuất PATH = / Ứng dụng / MAMP / bin / php5 / bin: $ PATH'. Và đó là .bash_profile thực sự ảnh hưởng đến các phiên Terminal của tôi.
bánh rán

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.