Cách sửa lỗi Terminal không tải ~ / .bashrc trên OS X Lion [đã đóng]


176

Bất cứ khi nào tôi mở một tab mới trong Terminal bằng Cmd+ T, nó sẽ mở bash trong cùng thư mục, như tab trước đó. Điều này hoạt động tốt khi tôi trong ~thư mục, nhưng nếu tôi ở bất cứ nơi nào khác, tôi gặp lỗi khi tải.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

Có vẻ như .bashrcđược tải thông qua đường dẫn tương đối và không tuyệt đối, bởi vì nếu tôi làm source ~/.bashrc, mọi thứ đều hoạt động trơn tru.

tải bashrc

Tôi nghĩ rằng đây là sự cố liên quan đến OS X Lion, vì trước khi nâng cấp từ Snow Leopard, tôi không gặp vấn đề tương tự. Nhưng điều đó có thể là do Terminal luôn mở tại ~, tôi không nhớ nếu nó cố mở cùng một thư mục.

Tuy nhiên, câu hỏi vẫn giữ nguyên, làm cách nào tôi có thể tải Terminal ~/.bashrcqua đường dẫn tuyệt đối và không tương đối?


1
câu hỏi này nên được chuyển sang apple.SE (nếu có thể?), không được đóng lại.
Sparr

@Sparr Tôi hoàn toàn đồng ý với bạn nhưng người điều hành chỉ chuyển câu hỏi mới hơn không phải câu hỏi cũ. Xem thảo luận tại đây
рüффп

Câu trả lời:


357

Terminal mở một vỏ đăng nhập. Điều này có nghĩa, ~/.bash_profilesẽ được thực hiện, ~/.bashrckhông.

Giải pháp trên hầu hết các hệ thống là "yêu cầu" ~/.bashrctrong ~/.bash_profile: chỉ cần đặt đoạn mã này vào ~/.bash_profile:

[[ -s ~/.bashrc ]] && source ~/.bashrc

8
Bất cứ ai có thể giải thích những gì [[ -s /file/path ]]đang làm? Cố gắng giải thích cho Google không quá dễ dàng.
Shane

18
Từ man bash: -s tệp Đúng nếu tệp tồn tại và có kích thước lớn hơn 0.
ckruse

1
"Terminal mở shell đăng nhập" - các loại os shell khác là gì? Tôi có thể tìm thêm tài liệu về nó ở đâu?
biết

4
Có cái gọi là shell shell tương tác, và shell đăng nhập. Hướng dẫn bash của bạn ( man bash) nói về nó và giải thích nó, chương INVOCATIONman bash/INVOCATION
HÓA ĐƠN

3
Tôi không thấy cách một câu hỏi liên quan đến tình huống thực thi mã, được giải quyết bằng một dòng mã, là "lạc đề" đối với một trang web câu hỏi lập trình.
Kheldar

26

Đổi tên .bashrcthành .profile(hoặc liên kết mềm cái sau với cái trước) cũng nên thực hiện thủ thuật. Xem ở đây .


Hoặc bạn có thể liên kết chúng: cd && ln -s ./.bashrc ./.profileLưu ý rằng các liên kết tượng cảm rất nhạy cảm với đường dẫn tệp, tôi tin rằng việc sử dụng cú pháp trên có hiệu quả, nhưng để chắc chắn rằng bạn có thể sử dụng các đường dẫn tuyệt đối trong mọi trường hợp.
Steve Benner

1
À không? Những tập tin này có mục đích khác nhau. Nếu bạn có cú pháp Bash trong .profilebạn sẽ phá vỡ thường xuyên sh.
tripleee

14

Tôi có những điều sau đây ~/.bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

Nếu tôi có .bashrcthay vì ~/.bashrc, tôi sẽ thấy cùng một triệu chứng bạn đang thấy.

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.