gVim không nguồn .bashrc, .bash_profile hoặc .profile từ shell không đăng nhập không tương tác


1

Tôi có những điều sau đây trên .vimrc của tôi

set shell=C:/cygwin/bin/bash
set shellcmdflag=-c
set shellxquote=\"

Vì vậy, shell tôi đang sử dụng là không tương tác và không đăng nhập. Tôi nghĩ rằng shell không đăng nhập nguồn .bashrc, nhưng dường như không phải vậy. Tôi không muốn làm cho vỏ của tôi interactivehoặc login. Có cách nào cho tôi nguồn .bashrc theo cách khác không? .Bash_profile của tôi đã có nguồn .bashrc


Có một lý do bạn không muốn một vỏ tương tác? Nếu bạn muốn có thể khởi chạy các lệnh và chạy mọi thứ, bạn sẽ cần một vỏ tương tác. Ngoài ra, bạn có chắc chắn về -c, trong Linux GNU bash, -clà lệnh bạn muốn chạy.
terdon

@terdon: shell tương tác đặt thư mục làm việc hiện tại thành $ HOME, đây không phải là thứ tôi muốn. Có, '-c` cho phép tôi nhập lệnh trong dòng lệnh gvim (tức là sau :) vì vậy bất cứ điều gì tôi nhập vào sẽ trở thành đầu vào lệnh cho bash shell.
Forethinker

Câu trả lời:


4

Những gì bạn mô tả là hành vi bình thường. Bắt đầu bash với -ctùy chọn sẽ khởi chạy một vỏ không tương tác, không đăng nhập . Điều này có nghĩa là bash sẽ không lấy bất kỳ tệp cấu hình cổ điển nào mà $BASH_ENVthay vào đó là biến . Như đã giải thích trong trang bash man:

  • vỏ không tương tác, không đăng nhập:

    Ví dụ, khi bash được khởi động không tương tác, để chạy tập lệnh shell, nó tìm biến BASH_ENV trong môi trường, mở rộng giá trị của nó nếu nó xuất hiện ở đó và sử dụng giá trị mở rộng làm tên của tệp để đọc và thực thi . Bash hành xử như thể lệnh sau được thực thi:

    if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
  • tương tác, vỏ đăng nhập:

    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, đầu 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ó sẽ tìm ~ / .bash_profile , ~ / .bash_login~ / .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.

  • vỏ tương tác, không đăng nhập

    Khi một vỏ tương tác không phải là vỏ đăng nhập được khởi động, bash sẽ đọc và thực thi các lệnh từ /etc/bash.bashrc~ / .bashrc , nếu các tệp này tồn tại. Điều này có thể bị ức chế bằng cách sử dụng tùy chọn --norc. Tùy chọn tệp --rcfile sẽ buộc bash đọc và thực thi các lệnh từ tệp thay vì /etc/bash.bashrc và ~ / .bashrc.


Vì vậy, nếu bạn muốn shell không tương tác, không đăng nhập của mình thành nguồn ~/.bahsrc, bạn sẽ cần đặt giá trị BASH_ENVthành ~/.bashrc. Thêm dòng này vào ~/.bashrchoặc ~/.profiletập tin của bạn :

export BASH_ENV=~/.bashrc

Nếu .bashrc không được đọc, thì việc thêm export BASH_ENV=~/.bashrcvào .bashrc sẽ giúp ích như thế nào?
Hashken
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.