Mac OS X .bashrc không hoạt động


77

Tôi có một .bashrctập tin một dòng trong thư mục nhà của tôi:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Nhưng nó không tạo ra bí danh. Tại sao có thể như vậy?

Câu trả lời:


101

Trong OSX, .bash_profileđược sử dụng thay vì .bashrc.

Và có, .bash_profiletập tin nên được đặt trong /Users/YourName/
(Nói cách khác, ~/.bash_profile)

Ví dụ, /Users/Aaron/.bash_profile


11
Đây không phải là câu trả lời đúng. Các bí danh không được kế thừa, vì vậy, nếu bạn chỉ định nghĩa chúng trong .bash_profile, chúng sẽ không được xác định trong các shell không đăng nhập (ví dụ: khi bạn chạy bash bên trong bash).
LaC

1
Hoặc người ta có thể sử dụng bash_aliases có tác dụng tương tự như đặt bí danh vào bashrc, nhưng dễ quản lý hơn: ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
trong .bash_profile của tôi, tôi chỉ viết một dòng cho bí danh (loại) bashrc ->source ~/.bashrc
Eric Hodonsky

86

.[bash_]profile.bashrccó thể được sử dụng trên cả OS X và Linux. Cái trước được tải khi shell là shell đăng nhập; cái sau khi nó không. Sự khác biệt thực sự là Linux chạy shell đăng nhập khi người dùng đăng nhập vào một phiên đồ họa, và sau đó, khi bạn mở một ứng dụng đầu cuối, các shell đó là các shell không đăng nhập; trong khi OS X không chạy shell khi đăng nhập đồ họa và khi bạn chạy shell từ Terminal.app, đó là shell đăng nhập.

Nếu bạn muốn bí danh của mình hoạt động trong cả shell đăng nhập và không đăng nhập (và bạn thường làm), bạn nên đặt chúng vào .bashrc nguồn .bashrc trong .bash_profile của bạn, với một dòng như thế này:

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

Điều này áp dụng cho bất kỳ hệ thống sử dụng bash.


15
+1 với lời cảnh báo rằng mọi thứ trong .bashrc sẽ được chạy lại cho các shell con (và subsub-, subsubub-, v.v.), vì vậy, ví dụ PATH=$PATH:/my/private/binariessẽ dẫn đến phình PATH. Xem điều này cho một cách giải quyết.
Gordon Davisson

2
Thật. Vì các biến đối tượng đã xuất được kế thừa, tôi chỉ đặt chúng vào .profilethay vì .bashrc.
LaC

1
@LaC bạn có thể giải thích _Since các biến đối tượng đã xuất được kế thừa không, tôi chỉ đặt chúng trong lỗi .profile_?
sam

1
@sam, tôi không biết "dụ" đến từ đâu. Tôi chỉ có nghĩa là "biến xuất khẩu". Thật không may, tôi không thể chỉnh sửa nhận xét đó.
LaC

2
@dinosaur: "-r" kiểm tra xem tệp có thể đọc được không.
mhvelplund

7

Hoặc tạo một liên kết sym có tên .bash_profile chỉ vào .bashrc của bạn

ln -s .bashrc .bash_profile

2

Nó không được đặt bí danh vì .bash_profileđược sử dụng thay vì .bashrctrên Mac OS X.

Vì vậy, bạn có hai lựa chọn:

  • Đặt bí danh trong của bạn ~/.bash_profile

  • Hoặc lấy nguồn của bạn .bashrctừ của bạn .bash_profilebằng cách thêm dòng này vào .bash_profile:

    . ~/.bashrc


1

Trên Mac OS X Yosemite , hãy chạy lệnh sau:

vi ~/.profile

Sau đó thêm dòng sau:

source ~/.bashrc

Bây giờ lưu và đóng .profile, sau đó mở một cửa sổ Terminal mới hoặc chỉ chạy:

source ~/.profile

Xem thêm câu trả lời này . Nó hoạt động trên v10.10.3.


Đây không chỉ là một bản tóm tắt các câu trả lời từ bốn năm trước.
G-Man

Chắc chắn, chỉ cần một háo hức dễ dàng để đọc và áp dụng nó. Cộng với một đóng góp nhỏ - vì các tệp được đề cập khác không có sẵn trên hệ điều hành Yosemite của tôi.
Ricardo
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.