Tại sao tôi phải nguồn .bashrc mỗi khi tôi mở terminal để bí danh hoạt động? [bản sao]


25

Tôi đã thêm dòng này vào ~/.bashrctập tin của tôi .

alias myserver='ssh davidfaux@davidfaux.com'

Tuy nhiên, khi tôi mở terminal và chạy myserver, terminal phàn nàn rằng

-bash: myserver: command not found

Tuy nhiên, khi tôi nguồn tệp .bashrc của mình, ( . .bashrc), bí danh hoạt động.

Tuy nhiên, tôi không muốn tìm nguồn tệp mỗi khi tôi mở terminal để bí danh hoạt động. Làm thế nào để tôi thực hiện điều đó?


3
Nhận xét này giải thích lý do cho việc này. Câu hỏi đó cho bạn biết làm thế nào để sửa nó.
ughoavgfhw

Cảm ơn rất nhiều! Tôi không biết rằng việc khởi động shell sẽ thực thi các tệp đó theo thứ tự. Thật vậy, thêm . .bashrcvào .bash_profilecông trình.
David Faux

@ughoavgfhw có thể / bạn có nên thay đổi nhận xét của mình thành câu trả lời không? Bằng cách đó, nó có thể được đánh dấu là một câu trả lời.
soxman

Câu trả lời:


25

Nói tóm lại, bạn đang đặt bí danh của mình vào tệp sai .bashrc, đó là lý do tại sao bạn cần tiếp tục chạy nguồn để bí danh hoạt động trong mọi trường hợp thiết bị đầu cuối đăng nhập mới.

Từ nhận xét của Chris Johnsen tại Tại sao .bashrc không tự động chạy?

Theo mặc định, Terminal khởi động shell thông qua / usr / bin / login, điều này làm cho shell trở thành shell đăng nhập. Trên mọi nền tảng (không chỉ Mac OS X) bash không sử dụng .bashrc cho shell đăng nhập (chỉ / etc / profile và đầu tiên của .bash_profile, .bash_login, .profile tồn tại và có thể đọc được). Đây là lý do tại sao, đưa nguồn ~ / .bashrc vào .bash_profile của bạn là lời khuyên chuẩn.

Để biết thêm thông tin, xem trang hướng dẫn cho bash:

man bash

Sau đó nhìn vào phần HÓA ĐƠN.


Tôi có cần khởi động lại để mọi thứ hoạt động không? Bởi vì tôi đã thêm vào source ~/.bashrc.bash_profile của mình, nhưng tôi vẫn gặp phải vấn đề tương tự ...
Michiel

1
Không, trong hầu hết các trường hợp, bạn chỉ cần mở một cửa sổ đầu cuối mới để các thay đổi có hiệu lực, các thay đổi sẽ chỉ có hiệu lực trong cửa sổ mới mở.
MrDaniel

11

Bạn luôn có thể đặt

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

vào tập tin ~/.profilehoặc ~/.bash_profiletrên mac tôi nghĩ.

Oooor, bạn chỉ có thể đặt công cụ của bạn vào .profilehoặc .bash_profile.


Điều này được ghi chú trong câu trả lời khác - tại sao bạn không chắc chắn về những điều này?
dùng151019

Vui lòng đọc câu hỏi rất giống nhau này: apple.stackexchange.com/q/12993/22003 và thêm vào đó bất kỳ sự ngẫu hứng nào.
dan

@danielAzuelos Chờ đợi; Bạn có muốn tôi nhận xét trên trang khác hoặc cập nhật câu trả lời của tôi dựa trên câu hỏi khác không?
Dylan

@Mark Tôi chỉ đang suy nghĩ theo một nghĩa rất giả định - giống như điều gì xảy ra nếu quá trình đầu cuối của ai đó không biết đến nguồn .profile? Thiết bị đầu cuối của họ có thể sẽ không bắt đầu ở nơi đầu tiên, nhưng vẫn có thể .... giống như nếu ai đó đang hack xung quanh tại / usr / bin / đăng nhập của họ hoặc một cái gì đó.
Dylan

→ Dylan: vui lòng đọc câu hỏi tương tự này: apple.stackexchange.com/q/12993/22003 và bạn sẽ tìm thấy câu trả lời cho "có thể?".
dan
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.