Hồ sơ của MinGW Bash


37

Tôi sử dụng MinGW trên Windows 7. Tôi có một .bashrcsố bí danh trong đó. Tệp nằm trong thư mục nhà của tôi, nơi MinGW khởi động tôi, vì vậy nó cũng tin rằng thư mục đó là thư mục nhà của tôi. Nó không tự động tải nội dung của thư mục. Tôi phải chạy bashlệnh để làm cho các bí danh hoạt động.

Tôi đã thử đổi tên nó thành .bash_profile. Điều này chỉ làm mọi thứ tồi tệ hơn vì nó không tải tự động và cũng không tải khi tôi chạy bashthủ công.

Làm thế nào tôi có thể khắc phục vấn đề này?


Xin lỗi, đường dẫn phải là: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Câu trả lời:


48

bashcó lẽ đang bắt đầu như một vỏ đăng nhập, trong trường hợp đó nó không .bashrctự động đọc . Thay vào đó, nó đọc .bash_profile. Từ hướng dẫn Bash :

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.

Vì vậy, tóm lại, tạo một .bash_profiletệp trong homedir của bạn và thêm dòng trích dẫn ở trên.

Nếu bạn bashthực sự được gọi là sh, thì bạn sẽ cần sử dụng .profilethay vì .bash_profile(xem phần "Được gọi với tên sh" của liên kết thủ công Bash ở trên).


1
Cảm ơn ý tưởng, mặc dù đã không làm việc. Giống như tôi đã nói trong câu hỏi, việc đặt các lệnh bí danh vào .bash_profile hoàn toàn không hoạt động, vì vậy có vẻ như điều đó không được đọc.
KurToMe

5
Điều này cho tôi ý tưởng để làm chính xác những gì bạn nói ngoại trừ đưa nó vào tệp .profile thay thế. Vì một số lý do đã hoạt động (có thể MinGW không sử dụng Bash theo mặc định hoặc một cái gì đó điên rồ). Nếu bạn thêm tùy chọn này vào câu trả lời của mình, tôi sẽ đánh dấu là chấp nhận.
KurToMe

1
À, có một lỗi đánh máy trong câu hỏi của tôi mà tôi đã sửa, tôi đã gọi nó .bash_rctrong câu hỏi, nhưng ý tôi là vậy .bash_profile.
KurToMe

hơi ngắn gọn hơn:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka

1
@KurToMe Tôi đã chỉnh sửa để bao quát tình hình của bạn.
jjlin

8

Tôi đang chạy Windows XP và gặp vấn đề tương tự. Tôi tìm thấy HOWTO Tạo môi trường xây dựng MSYS .

Đây là dòng quan trọng:

Để giúp xác định bản dựng thời gian chạy và thư mục làm việc hiện tại, có thể thêm các mục sau vào ~/.profiletệp.

Trong shell MinGW, tôi đã tạo .profile:

cd ~
touch .profile

Tôi đã sử dụng Notepad ++ để chỉnh sửa nó dưới dạng tệp văn bản định dạng Unix có tên .profilevà lưu nó trong thư mục chính của tôi,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Sau đó, tôi đã thêm bí danh của mình và lưu lại:

alias n='nano -w'

Sau đó, tôi đã kích hoạt phím tắt MinGW Shell từ menu bắt đầu của mình và nhanh chóng, nó hoạt động! nano không có gói văn bản.

Tôi hy vọng cái này sẽ giúp bạn.


Những gì bạn đang nói không phải là jive ... ~ có nghĩa là thư mục nhà của người dùng ... sau đó nêu rõ c: \ MinGW \ msys \ 1.0 \ home ... điều đó không có nghĩa gì là dấu ngã là một tham chiếu đến nhà USERS ... trên các cửa sổ mà% userprofile% ...
Eddie B

2

Tôi không tìm thấy .bash_profile để làm việc cho tôi (nó không được đọc), vì vậy tôi đã sử dụng cách tiếp cận .profile và đặt trong đó:

exec bash

Điều này thay thế shell hiện tại của tôi bằng một bash mới, đọc .bashrc của tôi

Tôi nghĩ rằng việc sử dụng .profile cho thấy rằng sh được sử dụng khi đăng nhập chứ không phải bash.


1

Đối với tôi, MINGW được cài đặt với GIT, đã hoạt động: .bash_profile đưa vào C:\Users\[user_name]

Đây cũng là thư mục trong đó ~ trỏ vào shell (pwd).

Cứ như vậy :)


0

Dọc theo dòng của @Koshmarr, nhưng hơi khác. Của tôi mingw64, được tải xuống từ git-scm.com , sẽ tải /c/Users/[user-name]khi khởi động. Tuy nhiên, ổ đĩa nhà của tôi (được tìm thấy bởi cd ~) đã ở trong /h/. Tôi đặt một .bashrc.bash_profilevào ~ổ đĩa của tôi và mọi thứ làm việc.

Trong .bash_profile:

    source ~/.bashrc;

Chỉ cần tìm ra nơi MINGW coi nhà và đặt .bash_profileở đó.


0

Cách thiết lập tệp khởi tạo MSYS Bash

Trong HĐH Windows, cách bạn trỏ đến các tệp khởi tạo được Bash sử dụng (nghĩa là hồ sơ, bash_profile, bashrc) khác với HĐH Linux.

Sự khác biệt giữa HĐH Windows và Linux là cấu trúc hệ thống tệp của chúng, dẫn đến sự khác biệt về vị trí tệp Bash và quy ước đặt tên tệp.

Cách thiết lập các tệp khởi tạo MSYS Bash (ví dụ: hồ sơ, bash_profile và bashrc)

1) Trong WINOS, mở thư mục 'etc' nằm ở đây 'C: \ msys \ 1.0 \ etc \'. Chú thích. bạn sẽ thấy một tập tin 'hồ sơ' bên trong thư mục 'vv'.

2) Lưu tệp không có tệp mở rộng (nghĩa là khi bạn lưu, hãy đặt lưu dưới dạng thành '.all tệp') với tên tệp '.bash_profile' thành 'C: \ msys \ 1.0 \ home \ USERNAME'. Chú thích. có dấu chấm làm tiền tố cho tên tệp (ví dụ: '.bash_profile') như bạn mong đợi trong thiết lập Linux OS Bash

2) Lưu tệp không có tệp mở rộng (nghĩa là khi bạn lưu, hãy đặt lưu dưới dạng thành '.all tệp') với tên tệp '.bashrc' thành 'C: \ msys \ 1.0 \ home \ USERNAME'. Chú thích. có dấu chấm làm tiền tố cho tên tệp (ví dụ: '.bash_profile') như bạn mong đợi trong thiết lập Linux OS Bash

4) Mở tệp 'hồ sơ' trong trình chỉnh sửa văn bản (văn bản cao siêu x là tốt) Lưu ý: Vị trí tệp của 'hồ sơ' là 'C: \ msys \ 1.0 \ etc \'

Trong tệp 'hồ sơ', cuộn đến dòng văn bản ở cuối tệp (nghĩa là cuộn xuống dưới cùng), bạn sẽ thấy một dòng kiểm tra chỉ ra Bash để thay đổi thư mục hiện tại của nó thành HOME (Trong MSYS, HOME được xác định trong tập tin 'hồ sơ')

CD $HOME

5) Trước dòng có văn bản 'CD $ HOME' sao chép mã sau đây - thêm tập lệnh này trong 'hồ sơ' sẽ báo cho MSYS bash để chạy bash_profile # ---------------- -------------------------------------------------- --------- #modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
echo '[i] INFO loading personal environment variables and startup   programs.... '
BASHRC="$HOME/.bash_profile"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END
#---------------------------------------------------------------------------

6) Mở tệp 'bash_profile' trong trình chỉnh sửa văn bản ( Sublime Text x là tốt) và phần cuối của tệp (ở cuối tệp)

7) Sao chép mã sau vào cuối tệp - thêm tập lệnh này trong '.bash_profile' sẽ cho Bash chạy '.bashrc'

#---------------------------------------------------------------------------
#modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
BASHRC="$HOME/.bashrc"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END

# ------------------------------------------------- --------------------------

8) OK, bây giờ chúng ta hãy viết một tập lệnh nhỏ bên trong '.bashrc' để xem liệu 'hồ sơ' đang gọi 'bash_profile' và nếu 'bash_profile' đang gọi '.bashrc'.

8.1) Hãy nghĩ về một tên lệnh bạn muốn tạo. Hãy sử dụng 't' để có nghĩa là thử nghiệm

8.2) Mở thiết bị đầu cuối Bash và gõ 't'. Bash nên trả lời 't: lệnh không tìm thấy' - nếu nó không nói 't: lệnh không tìm thấy' thì lặp lại 8.1 và 8.2 cho đến khi tên lệnh của bạn nói 'lệnh không tìm thấy'. Bạn không muốn đặt bí danh một tên lệnh được gán cho bash BAD!, Vì vậy nó phải là 'lệnh không tìm thấy'

8.3) OK, 't' đã cho tôi một 't: lệnh không tìm thấy'. Bây giờ, hãy viết tập lệnh vào '.bashrc'

8.4) Trong '.bashrc' viết

# Use double quotes or bash will not write it
alias t="echo passed test"

8.5) Lưu tệp '.bashrc' trong 'C: \ msys \ 1.0 \ home \ USERNAME'

9) Gần đến rồi. Bây giờ khởi động lại thiết bị đầu cuối Bash và đảm bảo đóng mọi thiết bị đầu cuối Bash đã mở trước đó

10) Nhập vào thiết bị đầu cuối 't'. Nó sẽ trả lời 'vượt qua thử nghiệm'. Nếu không, hãy kiểm tra cẩn thận mã được viết chính xác (bắt đầu bằng cách kiểm tra dấu ngoặc kép)

Một số lưu ý 1) 'tên tệp nguồn' giống như '. tên tệp '

2) "" dấu ngoặc kép cho phép các biến được thay thế bằng nội dung của nó

3) $ HOME là / home / USERNAME giống như ~ is / home / USERNAME

4) Một hàm luôn được ưu tiên hơn bí danh 2

Để biết thêm chi tiết, xem tài liệu tham khảo BASH

Tôi mới đến Bash. Vì vậy, không có gì đảm bảo tôi đã làm điều này một cách tốt nhất.

Chúc may mắn!

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.