.bash_profile hoặc .bashrc cho shell trong emacs?


11

Tôi đã viết một bí danh cho một lệnh lớn và lưu trữ nó .bash_profilevà thật ngạc nhiên, emacs đã không nhận được bí danh mà tôi đã viết .bash_profile. Sau một số tìm kiếm trên internet, tôi đã tạo một .bashrctệp trong $ HOME của mình bằng lệnh bí danh và chỉ sau khi emacs nhặt được bí danh. Tôi bối rối vì terminal.app lấy bí danh từ .bash_profilenhưng emacs chỉ lấy bí danh .bashrc.

Tôi đã chạy M-x shellvà tôi đang trên macOS. Ai đó có thể giải thích cho tôi những gì mối quan hệ với emacs và .bashrc& .bash_profile.

Thêm vào điểm, làm thế nào tôi có thể nhận được Emacs để đọc của tôi .bash_profileNgoài ra để .bashrc?


1
Làm thế nào bạn có được Emacs để lấy .bashrcbí danh của bạn ? Tôi đang hỏi điều này bởi vì Emacs của tôi (và rõ ràng là những người khác) không làm điều đó theo mặc định.
Arch Stanton

@ArchStanton xem @Vera Johanna trả lời cho câu hỏi này. Đó là cùng một phương pháp tôi đã sử dụng. Mặc dù bây giờ tôi đang sử dụng zshthay vì bash :)
Chakravarthy Raghunandan

Câu trả lời:


14

Đây là hành vi đúng. .bash_profilelà cho cái gọi là shell đăng nhập. Giống như khi bạn đăng nhập vào máy tính của bạn trong chế độ văn bản, hoặc trong một mô phỏng thiết bị với một máy tính khác nhau thông qua sshhay telnethay ...

.bashrccó nghĩa là cho các shell không đăng nhập, như khi bạn đã đăng nhập và bắt đầu một xterm mới, hoặc trong trường hợp này là shellchế độ của emacs .

Thông thường các .bash_profilelệnh chứa để đọc trong .bashrcquá:

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

vì vậy .bashrcđược đọc ở mỗi lần khởi động.


Vì vậy, bí danh thuộc về .bashrc; nó cũng là thông lệ để tạo một riêng biệt .bash_aliasesvà đưa nó vào .bashrcthông qua cùng một cấu trúc:

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

11

Ngoài các điểm được tạo bởi @pingi, bạn cũng có thể sử dụng tệp cấu hình riêng biệt sẽ chỉ được tải cho trình bao emacs ( M-x shell):

Từ trang hướng dẫn (emacs) Interactive Shell :

Emacs gửi shell mới nội dung của tệp '~ / .emacs_SHELLNAME' làm đầu vào, nếu nó tồn tại, trong đó SHELLNAME là tên của tệp mà shell được tải từ đó. Ví dụ: nếu bạn sử dụng bash, tệp được gửi tới nó là '~ / .emacs_bash'. Nếu không tìm thấy tệp này, Emacs sẽ thử với '~ / .emacs.d / init_SHELLNAME.sh'.

Điều này hữu ích nếu bạn muốn sử dụng một định dạng dấu nhắc shell khác trong Emacs hoặc để xác định các hàm để truyền tệp cho emacsclient.

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.