Nơi tìm tệp .bashrc trên Mac OS X Snow Leopard và Lion?


89

Tôi muốn cài đặt rvm trên máy Snow Leopard của mình.

Nó nói rằng tôi cần thêm một dòng vào .bashrctệp của mình (tôi đang sử dụng bash) nhưng .bashrctệp của tôi ở đâu?


1
Bạn nên đưa giải pháp của mình vào câu trả lời và chấp nhận nó (Bạn sẽ phải đợi một hoặc hai ngày trước khi SU cho phép bạn làm như vậy) Bằng cách đó, những người có cùng vấn đề có thể nhìn vào câu hỏi có thể thấy rằng nó có câu trả lời.
Nifle

1
Giải pháp của ông không khác với câu trả lời được bình chọn hàng đầu ..
David Cowden

Để chắc chắn, đây không phải là vấn đề của hồ sơ "Linux = .bashrc so với Mac OS =. (Bash_)", các tệp khởi động hệ vỏ hoạt động giống nhau trên Linux và Mac và tệp .bashrc là nơi phân bổ nhiều hơn cho Phiên cài đặt cụ thể. bạn sử dụng ví dụ tmux hoặc màn hình bạn có thể không có phiên đăng nhập nhưng vẫn muốn bí danh của mình. Lý do Mac cảm thấy khác biệt là hầu hết các bản phân phối Linux đều cung cấp các tập lệnh hồ sơ hệ thống hoặc các cấu hình bộ xương đã ủy nhiệm (nguồn) bashrc.
eckes

Câu trả lời:


78

Về vấn đề .bashrctrên:

Trên hầu hết các hệ thống, ~/.bashrcchỉ được sử dụng khi bắt đầu một vỏ không đăng nhập tương tác . Tuy nhiên, khi bạn khởi động một shell mới, nó thường là một shell đăng nhập tương tác . Vì đây là một vỏ đăng nhập , nên .bashrcđược bỏ qua. Để giữ môi trường nhất quán giữa các vỏ không đăng nhập và đăng nhập, bạn phải lấy nguồn .bashrctừ của bạn .profilehoặc của bạn .bash_profile.

Xem Hướng dẫn tham khảo Bash, phần 6.2 Tệp khởi động Bash

Được gọi dưới dạng vỏ đăng nhập tương tác hoặc với --login

Khi Bash được gọi dưới dạng shell đăng nhập tương tác hoặc dưới dạng shell không tương tác với tùy chọn --login, trước tiên, nó sẽ đọc và thực thi các lệnh từ tệp / etc / profile, nếu tệp đó tồn tại. Sau khi đọc tệp đó, nó tìm ~ / .bash_profile, ~ / .bash_login và ~ / .profile, theo thứ tự đó, đọc và thực thi các lệnh từ lệnh đầu tiên tồn tại và có thể đọc được.

Được gọi là một vỏ không đăng nhập tương tác

Khi một vỏ tương tác không phải là vỏ đăng nhập được khởi động, Bash đọc và thực thi các lệnh từ ~ / .bashrc, nếu tệp đó tồn tại.

Vì vậy, thông thường, ~ / .bash_profile của bạn chứa dòng

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

sau (hoặc trước) bất kỳ khởi tạo cụ thể đăng nhập.

Trên máy Mac của tôi (Running Leopard), không có dòng nào đến nguồn ~/.bashrc. Tôi đã phải tự thêm chức năng này.

Trên một số hệ thống và các HĐH khác, .bashrccó nguồn gốc từ toàn cầu /etc/profilehoặc /etc/bash_profile, hoặc được thực hiện bằng cách sử dụng các tệp mẫu từ /etc/skel.

Thành thật mà nói, sự khác biệt giữa .bashrc.bash_profilekhông được cộng đồng hiểu rõ. Khi nhiều nhà phát triển nói "Thêm cái này vào .bashrc của bạn", ý nghĩa thực sự của họ là "Thêm cái này vào .bash_profile của bạn". Họ muốn chức năng được thêm vào vỏ đăng nhập của bạn ( .bash_profilekhông phải), chứ không phải vào vỏ không đăng nhập của bạn . Trong thực tế, nó thường không quan trọng và đặt cấu hình vào .bashrclà chấp nhận được.


Liên kết này cung cấp một cái nhìn tổng quan về các loại shell và khi các tệp khởi động được tải - hacktux.com/bash/bashrc/bash_profile
studgeek

"Nguồn gốc" ở đây có nghĩa là gì?
elgrego 4/11/2015

@elgrego, đây là một mô tả hay: Khi một tệp có nguồn gốc (bằng cách nhập tên tệp nguồn hoặc tên tệp vào dòng lệnh), các dòng mã trong tệp được thực thi như thể chúng được in ở dòng lệnh. Xem tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski

60

Vì vậy, hóa ra trên Mac OS X Snow Leopard cũng như Mac OS X Lion, tệp được tải được gọi là .profilekhông .bashrc.

Những gì bạn muốn làm là tạo một tệp trong ~/.profilevà gọi nó là .profile (nếu nó chưa tồn tại).

Đặt bất cứ thông tin nào bạn cần để tải với mỗi phiên bản bash ở đó (Cảm ơn, thepurplepixel).

Một vài lưu ý phụ:

  1. Khoảng thời gian trước tệp đánh dấu nó là vô hình đối với Finder và lệnh ls theo mặc định. Để liệt kê các tệp vô hình bằng lệnh ls từ Terminal, hãy sử dụng -atham số như sau:ls -a
  2. Các ~biểu tượng tượng trưng cho /Users/YourUserNamenơi yourusername là SHORTNAME của tên sử dụng.

Chỉnh sửa: Chris Page lưu ý (chính xác) rằng bất cứ điều gì bạn đặt trong tệp .profile sẽ áp dụng cho bất kỳ shell nào bạn đang sử dụng (ví dụ: zhs, bash, et cetera). Nếu bạn muốn nội dung chỉ ảnh hưởng đến bash shell, hãy đặt nội dung trong .bash_profiletệp thay vì .profiletệp.


5
Câu hỏi của bạn đã được trả lời [chính xác] vào ngày 1 tháng 6 năm 2010 - một ngày sau khi bạn hỏi nó. Hơn một năm sau, bạn quay lại và đưa ra câu trả lời chính xác và chấp nhận câu trả lời của riêng bạn ...
David Cowden

3
Trên thực tế, câu trả lời của anh ấy có thêm chi tiết hơn câu trả lời được đưa ra vào ngày 1 tháng 6 năm 2010. Anh ấy đặc biệt giải quyết vấn đề trên Mac OS X mà tôi thấy hữu ích.
giun web

3
Lưu ý rằng nếu .bash_profileđã tồn tại trong thư mục chính của bạn, thì .profiletệp sẽ không được đọc!
Phani

Tôi có bản cài đặt Mac Os El capitan mới. Không có hồ sơ . Chỉ cần tạo một tệp .profile và nó hoạt động. Cá nhân tôi đã đổi tên .bashrc của mình thành .profile.
Nicolas Thery

4

Bạn phải làm cho riêng bạn .bashrc. Bạn có thể chỉ cần sử dụng trình soạn thảo văn bản để tạo một tệp có tên .bashrc(không có phần mở rộng) với nội dung bạn muốn và lưu nó trong thư mục chính của bạn ( /Users/YourUserName/).


1
Thật ra, điều đó không hiệu quả, nhưng bạn đã gửi cho tôi đúng hướng bằng cách bảo tôi tạo tập tin của riêng mình. Tệp hoạt động trên cấu hình Snow Leopard là .profile, không phải .bashrc (vì lý do nào đó không được tải trong HĐH này). Tôi sẽ đăng hướng dẫn chi tiết trong câu hỏi. Cảm ơn!
Yuval

@Yuval: Theo mặc định, a .bashrcsẽ hoạt động, nhưng chỉ khi không có .profile. Tôi đoán ~/.profiletồn tại theo mặc định, mặc dù. Mừng vì tôi có thể giúp! (Và bạn nên đưa giải pháp của mình vào câu trả lời và chấp nhận nó cho những độc giả tương lai của câu hỏi này).
vòng tròn

Tôi nghĩ rằng nhận xét của bạn về chỉ khi không có .profile là không chính xác. .bashrc sẽ hoạt động trong một vỏ không đăng nhập tương tác hoặc nếu nó có nguồn gốc từ .profile (.bash_profile có lẽ là một nơi tốt hơn, vì .profile dành cho shell Bourne). .profile được sử dụng trong trình bao không đăng nhập tương tác.
Stefan Lasiewski

@Stefan Nghe có vẻ đúng rồi. Tôi không phải là chuyên gia :)
vòng tròn

2
Không có ai;). Nội dung này (.bashrc so với .profile so với .bash_profile so với .bash_login so với shell đăng nhập tương tác so với shell không đăng nhập tương tác so với shell không tương tác) gây nhầm lẫn, và nó bị phá vỡ và bị ghi đè bởi nhiều tập lệnh Unix và shell.
Stefan Lasiewski

3

Tôi thấy rằng trong HĐH 10.6.5 của mình, cài đặt bash nằm trong "/ etc / bashrc". Tôi nghĩ rằng đây là thông số kỹ thuật của toplevel cho shell.

Tuy nhiên, bạn cần một tài khoản root để sửa đổi nó. Thông số kỹ thuật cho mỗi người dùng cục bộ "~ / .bashrc" phải bắt đầu bằng đoạn mã sau, để đọc và tải các cài đặt bash cấp hệ thống:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

Tôi thường thêm các bí danh trong bashrc cấp hệ thống để tất cả người dùng cũng có thể truy cập chúng. Trừ khi họ không muốn sử dụng các phím tắt và bí danh của bạn.

Chúc may mắn!


2
/ etc / profile (được chạy bởi shell đăng nhập) là tập lệnh khởi động bash toàn cầu áp dụng cho tất cả người dùng và cung cấp các hành vi mặc định cho shell đăng nhập. Nó lần lượt chạy / etc / bashrc, chứa các tùy chỉnh áp dụng cho cả shell đăng nhập và không đăng nhập. Tương tự, người dùng cá nhân nên tạo tệp ~ / .bash_profile chạy ~ / .bashrc, đây là nơi mà hầu hết các tùy chỉnh nên và ~ / .bashrc nên chạy / etc / bashrc để kế thừa các hành vi mặc định cho trình bao không đăng nhập.
Chris Trang

1
Đối với người dùng cá nhân, tốt nhất là thêm các tùy chỉnh này vào thư mục chính của bạn tại ~/.bashrc, không /etc/bashrc. /etc/bashrclà các cài đặt chung cho tất cả người dùng trên hệ thống của bạn, có thể không phải là những gì bạn muốn. Ngoài ra, Apple có thể xuất hiện và thay đổi /etc/bashrcđịnh kỳ, điều này có thể thổi bay các tùy chỉnh của bạn.
Stefan Lasiewski

1

Sử dụng tệp .profile để thêm bất cứ thứ gì bạn muốn thêm vào tệp linux .bashrc.

Ví dụ

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 

2
Tôi khuyên bạn nên sử dụng ~ / .bash_profile (thay vì ~ / .profile) trừ khi bạn chắc chắn rằng bạn muốn các tùy chỉnh của mình có hiệu lực trong các shell khác và chúng tương thích.
Chris Trang

Để chắc chắn, đây không phải là vấn đề của hồ sơ "Linux = .bashrc so với Mac OS =. (Bash_)", các tệp khởi động hệ vỏ hoạt động giống nhau trên Linux và Mac và tệp .bashrc là nơi phân bổ nhiều hơn cho Phiên cài đặt cụ thể. bạn sử dụng ví dụ tmux hoặc màn hình bạn có thể không có phiên đăng nhập nhưng vẫn muốn bí danh của mình. Lý do Mac cảm thấy khác biệt là hầu hết các bản phân phối Linux đều cung cấp các tập lệnh hồ sơ hệ thống hoặc các cấu hình bộ xương đã ủy nhiệm (nguồn) bashrc.
eckes
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.