2014-04-12 12 views
18

Tôi đang cố gắng chạy các lệnh Unix trên cả hai bash.exemintty.exe, được tìm thấy trong Cygwin64/bin (ví dụ: usr/bin/bash.exe). Khi tôi cố gắng chạy Unix commmand ls, tôi nhận được bash: ls: command not found. Tuy nhiên, khi tôi nhấp vào biểu tượng máy tính để bàn cho các thiết bị đầu cuối Cygwin, và nhập ls vào thiết bị đầu cuối Cygwin kết quả, Unix commmands như ls làm việc! Tại sao lệnh Unix không hoạt động trên bash.exemintty.exe, nhưng trên thiết bị đầu cuối kết quả từ việc nhấp vào biểu tượng? Hơn nữa, sự khác biệt giữa hai vỏ được mang bởi bash.exemintty.exe là gì?Cygwin Bash.exe so với mintty.exe

Trả lời

28

Hai chương trình này không có cách nào thay thế cho nhau. Bash là shell và MINTTY là terminal emulator. MinTTY thường chạy trình bao của người dùng của bạn trong chính nó, có thể hoặc không thể là Bash. Đó là để nói, bạn thường sử dụng hai chương trình với nhau.

Nếu bạn kiểm tra các phím tắt MinTTY rằng Cygwin's setup.exe bản dựng, bạn sẽ thấy rằng nó không phải là một khởi chạy đơn giản của chương trình. Nó chạy nó như là mintty -, thông báo cho MinTTY chạy shell của người dùng của bạn như một vỏ "login".

Đây là vấn đề bạn đã gặp phải. Nếu bạn chạy bash.exe mà không có tùy chọn, bạn chỉ cần lấy vỏ hình khỏa thân, với cấu hình mặc định của nó, có nghĩa là nó không làm những việc như thêm Cygwin /bin vào số PATH của bạn. Tương tự, nếu bạn chạy mintty.exe mà không có tùy chọn, nó sẽ chạy trình bao của người dùng mà không có tùy chọn. Khi bạn đặt dấu gạch ngang cho mintty.exe thay vì tên chương trình, nó sẽ chạy vỏ của người dùng của bạn làm vỏ đăng nhập: bash -l, thay vì chỉ bash. Tùy chọn đó làm cho Bash đọc trong một loạt các tập lệnh khởi động ngay sau khi khởi động, thiết lập lệnh PATH và nhiều hơn nữa bên cạnh.

Vì vậy, nếu bạn phải chạy bash.exe ngoài MinTTY vì lý do nào đó, bạn có thể nói bash -l để nhận được hành vi gần hơn với hoạt động bash.exe khi chạy qua mintty -. Tuy nhiên, bạn sẽ mất tất cả các tính năng mô phỏng thiết bị đầu cuối. MinTTY có hành vi sao chép tốt hơn nhiều so với giao diện điều khiển của Windows, ví dụ, đặc biệt là trên Windows 8 trở lên.

(Windows 10 bao gồm a much-improved console, nhưng mintty vẫn còn tốt hơn, IMHO, đặc biệt là khi làm việc với Cygwin.)

Say man mintty tại dấu nhắc lệnh Cygwin cho một lời giải thích đầy đủ hơn về tất cả những điều mintty làm cho bạn. Câu hỏi cụ thể này đã được trả lời trong phần INVOCATION của the MinTTY manual page.

+1

Cảm ơn bạn đã trả lời! –