.bashrc không có nguồn gốc trong iTerm + Mac OS X


62

Tôi đang sử dụng iTerm trong Mac OS X 10.6. Có vẻ như khi tôi mở iTerm, .bashrccũng không .bash_profilecó nguồn gốc. Tôi có thể nói vì các bí danh được xác định trong .bashrckhông được đặt. Làm thế nào để khắc phục?


2
Điều gì đang xảy ra đang ~/.bash_profileđược gọi bằng bash trước, đó là làm ngắn mạch các hướng dẫn bạn có ~/.bashrc. Vấn đề này có thể xảy ra bất ngờ nếu một chương trình giả mạo thêm một số hướng dẫn cho bạn ~/.bash_profilekhi trước đó tệp không tồn tại và bạn đã đặt tất cả các lệnh bash của mình vào ~/.bashrc. Giải pháp là xóa ~ / .bash_profile của bạn hoặc để có ~ / .bash_profile nguồn ~ / .bashrc của bạn. Điều này có thể được thực hiện bằng cách thêm lệnh: source ~/.bashrcvào cuối của bạn ~/.bash_profilevà khởi động lại thiết bị đầu cuối.
Eric Leschinski

Câu trả lời:


53

Bash sẽ nguồn EITHER .bash_profile hoặc .bashrc, tùy thuộc vào cách nó được gọi. Nếu nó là một vỏ đăng nhập, Bash tìm kiếm ~ / .bash_profile, ~ / .bash_login hoặc ~ / .profile, theo thứ tự đó và tìm nguồn đầu tiên mà nó tìm thấy (và chỉ cái đó). Nếu nó không phải là vỏ đăng nhập mà là tương tác (giống như hầu hết các phiên cuối), Bash sẽ nguồn ~ / .bashrc.

Có khả năng, iTerm đang tìm kiếm ~ / .bashrc. Nếu nó được cấu hình để bắt đầu như một vỏ đăng nhập, nó sẽ tìm ~ / .bash_profile. Nó gần như chắc chắn là một lỗi trong tệp cấu hình chứ không phải là vỏ không tìm nguồn cung ứng.

Tôi sẽ đặt một dòng ở đầu mỗi tập tin. Ở đầu ~ / .bash_profile:

export BASH_CONF="bash_profile"

Và ở đầu ~ / .bashrc:

export BASH_CONF="bashrc"

Sau đó, mở một iTerm mới và gõ

$ echo $BASH_CONF

Điều đó sẽ xác nhận tập tin đang có nguồn gốc và bạn có thể xem xét cú pháp của tập tin.


2
Đặt một biến môi trường khác nhau cho mỗi tệp nguồn cho phép có thêm thông tin, nghĩa là, nếu có nhiều hơn một tệp có nguồn gốc, bạn sẽ biết nó, chỉ là cái cuối cùng (nếu không phải là thứ tự có nguồn gốc.)
kmarsh

Điều này vẫn không tải tệp .bashrc. Tôi đã phải thêm nguồn ~ / .bashrc vào iTerm và Terminal Preferences của mình. btw Tôi đang sử dụng Mac OS X 10.9.5.
Nai sừng tấm khổng lồ

Tôi vừa thêm một tệp .profile và nó tự động hoạt động trên OS X 10.9.5 mà không làm hỏng các tùy chọn đầu cuối của bạn.
Nai sừng tấm khổng lồ

1
Tôi phát hiện ra nó là một vỏ đăng nhập bằng cách vào tùy chọn -> hồ sơ -> chung và vỏ đăng nhập được chọn theo lệnh. Hợp lệ trên MacOS El Capitan và iTerm2 3.0.14
Aditya

Giải pháp ở đây không hiệu quả với tôi, nhưng tôi đã tìm ra giải pháp. Ban đầu, không có bashrc và không có bash_profile. Câu trả lời ở đây đề xuất để tạo ra một bashrc. Thay vì tạo một tệp bashrc, tôi đã tạo một bash_profile và nó đã hoạt động. Bây giờ tôi cần hiểu tại sao bashrc không được thực thi và bash_profile có.
kalmanIsAGameChanger

68

Trong iTerm2, không có giải pháp nào trong số này làm việc cho tôi. Tôi đã có thể làm cho nó đọc đúng tệp .bashrc của mình bằng cách thêm lệnh

source ~/.bashrc 

đến trường Gửi văn bản khi bắt đầu: trường trong Cài đặt / Chung cho hồ sơ iTerm của tôi.

nhập mô tả hình ảnh ở đây


Điều gì đã xảy ra khi bạn làm những gì câu trả lời được chấp nhận cho thấy? Không có đầu ra?
Daniel Beck

Đúng. Tôi không có đầu ra và iTerm 2 chỉ tải shell bash mặc định mà không có bí danh nào.
Mark Struzinski

Câu trả lời đó đã bị phá vỡ cho đến tận bây giờ - đoạn trích thứ hai được cho là đi vào ~/.bashrc. Đã chỉnh sửa nó.
Daniel Beck

Tôi sử dụng ZSH và gặp vấn đề tương tự. Ngoại trừ việc không có tệp cấu hình nào của tôi tồn tại ở vị trí đầu tiên và phải được tạo. Tôi đã sử dụng câu trả lời này và đặt "Gửi văn bản khi bắt đầu", tuy nhiên, khi tôi khởi động lại ZSH đã tạo ra nó .zsh và ghi đè lên tệp của tôi, tôi đã có thể xóa "Gửi văn bản khi bắt đầu" và thêm cấu hình của mình vào tệp mới được tạo. Không chắc điều này có giúp được ai không
Arnolio

Tôi nghĩ rằng đây là vấn đề của mình .. và sau đó trên đường đi nhận ra rằng danh mục nhà của tôi không phải là thư mục mà tôi đã bắt đầu .. vì vậy khi tôi chuyển .bash_profile của mình sang một vị trí khác và tôi nghĩ rằng tôi đang ở đó (liên kết với nó từ danh mục ~ (nhà) của tôi, trên thực tế tôi đã thêm một liên kết tượng trưng vào thư mục sai. Thêm vào đây trong trường hợp nó giúp người khác, người sẽ trả lời câu hỏi này.
Alisso

23

Tôi chỉ tự hỏi bạn có thực sự sử dụng Bash? Có thể bạn có thể sử dụng echo $SHELL, hoàn toàn có khả năng bạn đang sử dụng zsh , bạn đã cài đặt trên-my-zh chưa?

Thông thường, tôi gặp phải vấn đề tương tự như bạn, tôi đã khắc phục bằng cách định cấu hình ~ / .zshrc thay vì ~ / .bash_profile cho shell đăng nhập hoặc ~ / .bashrc cho shell không đăng nhập.

Có lẽ bạn có thể thử


1
Gợi ý thú vị, mặc dù câu hỏi này đã 3 tuổi và có câu trả lời được chấp nhận.
Tyson

12

Trên máy 10.6 của tôi ~/.profilecó nguồn gốc. Vì vậy, một source .bashrcmục trong ~/.profilenên làm công việc.


Làm việc cho tôi trên Mac OS El Capitan.
dùng674669

Kinh nghiệm của tôi nói rằng bạn không muốn lấy một tệp .bashx từ một tệp khác, chúng riêng biệt vì một lý do :) Nếu bạn đang làm điều đó, thì có gì đó không ổn
Alexander Mills

@AlexanderMills Lý do các tệp này tồn tại là do Mac đã xé chúng ra khỏi Unix. Không có lý do gì tất cả chúng không nên được tải cho người dùng.
RaisinBranCrunch

bạn có thể nhận được các cuộc gọi vòng tròn nếu chúng tải lẫn nhau, là vấn đề, cách tốt nhất để tránh đó là lật một boolean với một var env và chỉ tải các tệp khác nếu boolean không được đặt.
Alexander Mills

8

Dễ dàng sửa chữa.

1. Mở ~/.zshrctập tin của bạn

2. Thêm dòng sau vào cuối tập tin.

source ~/.bash_profile

1
Xuất sắc! Điều đó đã làm nó cho tôi. Nó chưa bao giờ xảy ra với tôi rằng zsh đã cản trở tôi sau khi tôi cài đặt Oh-my-zh.
Cindy Conway

6

Trên máy 10.9 của tôi ~ / .bash_profile có nguồn gốc. Vì vậy, một mục .bashrc nguồn trong ~ / .bash_profile sẽ thực hiện công việc.


1

Đặt định nghĩa bí danh của bạn trong tệp hồ sơ bash, bạn phải tạo tệp nhưng nó sẽ có nguồn gốc tự động. Tôi tạo một tệp riêng gọi là alias.configuration và nguồn nó trong .bash_profile chỉ vì tôi có một người dùng khác được xác định và muốn có cùng một bí danh.


1
Thật ra .bashrccũng không .bash_profilecó nguồn gốc.
Computist

1

Thêm vào

set -x

đến đầu /etc/profile. Điều này sẽ cho bạn một tài khoản line-by-line của tất cả những gì được thực thi khi bashkhởi động, bao gồm các file có nguồn gốc từ bên trong /etc/profile, ~/.bash_profile, vv Đó là một chút khó khăn nếu bạn không hiểu bashkịch bản rất tốt, nhưng bạn có thể xem có một lỗi trong tệp khởi động và đầu ra sẽ hữu ích cho ai đó thành thạo bashđể giúp bạn xác định vấn đề của mình.

Bạn có thể xóa set -xdòng khi bạn hoàn thành khắc phục sự cố.


1

Vào ngày 10.10 và iTerm2 2.0, hồ sơ tùy chỉnh

  • .bash_rc sẽ hoạt động.
  • .bash_profile, hãy thử "/ bin / bash --login" thay vì "/ bin / bash"

Tôi đã bỏ phiếu cho câu trả lời này vì dường như đó là người duy nhất thừa nhận rằng trong OS X, tại một số điểm, bash sẽ cung cấp ".bash_rc" thay vì ".bashrc". Tôi chỉ đến đây vì tôi đang cố gắng tìm hiểu tại sao (và tôi vẫn không biết).
Marnix A. van Ammer 2/2/2016

0

Trong iTerm2, đảm bảo bạn đang sử dụng "vỏ đăng nhập" thay vì lệnh tùy chỉnh bao gồm "đăng nhập", điều này không làm những gì bạn mong đợi.


Lệnh iTerm2 thực sự làm gì?
studgeek

0

Thực hiện thay đổi sau và iTerm sẽ nguồn bashrc

iTerm> Tùy chọn> Chung> [x] Lệnh: / bin / bash


0

Vấn đề có thể được khắc phục bằng cách thêm dòng dưới đây vào / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"


-1

Tôi kết hợp các giải pháp cặp đôi với nhau để làm việc như mong đợi.

.bash_profile nguồn và chạy trên zsh.

Preferences -> Profiles -> General .

Chọn Lệnh dưới Lệnh.
Và thêm vào hộp văn bản /bin/bash --login.

Sau đó, trong .bash_profile thêm dòng /bin/zsh --login

Đó là nó.


(1 cái gì? (2) Nếu bạn bashluôn luôn chạy zsh, đó không phải là điều mà bất kỳ ai cũng mong đợi.
Scott

Nếu tôi đặt / bin / bash --login, nó không cung cấp bất kỳ tính năng nào của zsh. Sau đó, nếu tôi thay đổi nó thành loginshell trong tùy chọn, nó sẽ không đọc .bash_profile. Lúc nào tôi cũng phải chạy source ~/.bash_profilebằng tay. @Scott Sau khi làm những điều trên, tôi có zsh theo cách bắt buộc.
húng quế húng quế

(1) Quan điểm của tôi là zshcó thể là những gì bạn mong muốn , nhưng câu hỏi này không bắt buộc hoặc không được yêu cầu , được gắn thẻ [bash] và không nói gì về nó zsh. (2) Nếu bạn xác định bí danh và hàm shell và đặt biến (không xuất chúng) trong .bashrcvà / hoặc .bash_profile, chúng có sẵn cho bạn trong zshshell của bạn không?
Scott
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.