Câu trả lời:
Bạn đang sử dụng Windows CMD.EXE (từ thông báo lỗi). Nó sử dụng một cú pháp khác nhau để thực hiện các lệnh. Bạn sẽ cần sử dụng sh name.sh
, giả sử rằng bạn đã cài đặt Cygwin hoặc tương tự.
Để làm rõ, Windows không có tiện ích tích hợp để hỗ trợ các tệp .sh. Để chạy như vậy, bạn sẽ cần cài đặt một công cụ của bên thứ ba như Cygwin .
Bạn đang cố chạy một lệnh Linux tại Dấu nhắc lệnh của Windows.
Trên Linux, dấu gạch chéo phía trước là dấu phân cách đường dẫn. Trên Windows, dấu gạch chéo ngược là dấu phân cách đường dẫn và dấu gạch chéo về phía trước thường biểu thị một đối số.
Do đó, Windows nghĩ rằng bạn đang cố chạy một lệnh có tên "." và phân tích cú pháp đối số "/name.sh". Quy ước đúng sẽ là ". \ Name.sh". Ngoài ra, Windows sẽ tự động tìm kiếm thư mục hiện tại cho lệnh của bạn để bạn chỉ cần gõ "name.sh".
Vấn đề tiếp theo bạn sẽ gặp phải là Windows không biết tập lệnh sh là gì, một lần nữa đây là một điều của Linux. Bạn có thể giải quyết điều này bằng cách cài đặt Cygwin nếu bạn thực sự muốn hoặc cần chạy tập lệnh sh.
Tuy nhiên, đánh giá theo một trong những nhận xét trước đây của bạn, bạn cũng có thể đổi tên tập lệnh thành name.bat và xóa dòng "#! / Bin / sh". Bây giờ bạn có một tệp Batch mà Windows sẽ hiểu. Bạn có thể đọc thêm về các tập tin hàng loạt ở đây .
Ngoài ra, bạn có thể chuyển sang mặt tối và cài đặt Linux. Từ dấu nhắc:
sh runide.sh
hoặc là
sudo sh runide.sh
Chương trình của bạn sẽ chạy và bạn cũng sẽ có một hệ thống tốt hơn.
Tải xuống và cài đặt .git cho Windows
Nhấp chuột phải vào máy tính để bàn và nói "git bash here"
Thực thi tập lệnh của bạn như trong unix
Làm xong!
Thận trọng: Nhiều lệnh sẽ không hoạt động trên windows! Nhưng vẫn còn rất nhiều thứ cơ bản sẽ hoạt động.
Nếu bạn cần tập lệnh đó thường xuyên, bạn có thể muốn tạo một lối tắt (trên máy tính để bàn của bạn, vd):
Tạo một Shortcut để mintty.exe
trên máy tính để bàn của bạn
Chỉnh sửa thuộc tính của phím tắt và thay đổi mục tiêu (giữ đường dẫn):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Bạn đang cố gắng chạy xe của bạn bằng nước cam thay vì xăng. Windows chia sẻ các lệnh tương tự được lưu trữ trong các tệp .bat hoặc .cmd với các tập lệnh shell Unix / Linux / zOS Unix Subystem / * ix vì hai họ hệ điều hành này có chung tổ tiên là các máy DEC PDP-x.
Nếu bạn muốn hài lòng ngay lập tức, bạn sẽ cần cài đặt một môi trường cung cấp chương trình "sh.exe" hoặc chương trình "csh.exe" hoặc "bash.exe" (tsh.exe có ai không?)
Ngoài ra, nếu bạn biết các lệnh script Unix, rất rõ và bạn biết các lệnh tệp Windows .cmd và .bat, bạn có thể dịch tệp .sh thành tệp .bat hoặc .cmd. Mặc dù vậy, bạn sẽ thường gặp nhiều chương trình kiểu Unix không có tương đương trong Windows - grep, sed, vi, emacs, v.v. công cụ. Đặt nó trên một ổ đĩa flash, cho những dịp đặc biệt.
Ai đó đã nói điều gì đó về MS-DOS bằng cách sử dụng /
cho các lệnh và \
cho các đường dẫn. Điều này hơi sai lệch. Nhìn vào ví dụ của tôi:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Không có sự khác biệt về hiệu lực. Có, nó không đúng với tất cả các hoạt động - câu trả lời thực tế chỉ đơn giản là Không , hoặc không có Cygwin hoặc SSHD mà bạn không thể.
Tôi chỉ biết bởi vì tôi đã ngu ngốc dành nửa ngày để cố gắng tìm ra những gì if then fi
và eval
, exec
làm gì -Djava.something
khi được gọi.
Sử dụng Github cho Windows. Nó chứa tất cả các thực thi môi trường Unix.
Tôi tìm thấy một giải pháp khác biệt và dễ dàng, được gọi là UnixUtil .
Tải xuống và giải nén nó vào ổ C :. Đặt biến môi trường path
để bao gồm C:\UnixUtils\usr\local\wbin
.
Điều này quan trọng. KHÔNG đặt đường dẫn đếnC:\UnixUtils\bin
Để hoàn thiện, tôi muốn đề cập đến một tính năng mới của Windows Windows dành cho hệ thống Linux dành cho Linux 10. Các chi tiết được mô tả trong http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- bash-shell-on-windows-10 /
Lưu ý rằng nó yêu cầu kích hoạt công tắc Chuyển đổi chế độ dành cho nhà phát triển của chế độ trực tuyến và kích hoạt tùy chọn của Windows Windows Subystem dành cho Linux (Beta).
Đối với bản thân tôi, tôi thấy rằng cài đặt Git cho Windows (dù sao tôi cũng đang sử dụng) là đủ.
Đây là một luồng cũ nhưng đối với những người chạy Windows 10. Chỉ cần mở các tính năng của cửa sổ từ bảng điều khiển 'Bật hoặc Tắt tính năng của Windows'
Chọn tính năng 'Hệ thống con Windows cho Linux'. Sau khi cài đặt, bạn có 'Bash' và thậm chí bạn có thể định cấu hình máy chủ Linux gốc trong bash. Và tất nhiên, lệnh sh, trong bash, cũng hoạt động.
Có thể vấn đề thực sự nằm trong tệp name.sh
- bạn đang cố sử dụng .
lệnh nhưng nó đang cố chạy một loại shell (ví dụ csh
, tôi nghĩ) trong đó không phải là lệnh hợp lệ.
Vì vậy: có name.sh
bắt đầu với chính xác #!/bin/sh
(nếu bạn thực sự đang cố gắng chạy sh
)?
ok, có RẤT NHIỀU điều đó - bỏ #! / bin / sh và thay đổi độ mở rộng thành bat và nó có thể hoạt động với một vài sửa chữa khác. Sau đó, bạn chỉ có thể gọi nó bằng tên tệp của nó là tốt.
Cú pháp của tập lệnh shell unix và tệp bó windows không quá giống nhau. Cygwin, hoặc một đống lộn xộn với unxutils có thể tạo ra thứ gì đó sẽ hoạt động trong cả hai, nhưng trừ khi bạn TUYỆT ĐỐI chắc chắn môi trường luôn như vậy, nó không đáng để đau đầu
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
Gì?! Tôi nghi ngờ bạn chưa bao giờ thử điều này ... Trên Windows, ngay cả các khả năng bash đơn giản nhất cũng không được hỗ trợ hoặc yêu cầu cú pháp dài.
Nếu bạn có một hộp Linux trong nhà (hoặc cơ quan) và cắm vào cùng một mạng và mạng này an toàn, điều này có thể thực hiện thủ thuật:
mount //WinMachine/Share LinuxFolder
(IIRC và yêu cầu Samba ).Để chạy kịch bản shell từ các cửa sổ. Đầu tiên sử dụng lệnh: dos2unix sau đó bạn có thể sử dụng lệnh bình thường của mình: sh runide.sh
Điều này sẽ làm việc ra.
Mặc dù các câu trả lời hiện có ở đây là chính xác tại thời điểm đó, Windows 10 hiện có tùy chọn bao gồm một phiên bản Ubuntu đã sửa đổi chạy vỏ bash đầy đủ .
Khi được thực thi, các tập lệnh có thể được chạy theo cách thông thường từ bên trong bash, ví dụ:
chmod +x myscript.sh
./myscript.sh
Nếu bạn muốn chạy tập lệnh trực tiếp từ Windows, bạn có thể tạo một lối tắt trong cùng thư mục và đặt 'Target' thành một cái gì đó như:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Nếu đường dẫn của tập lệnh của bạn có liên quan đến vị trí của phím tắt (như ví dụ ở trên), hãy đảm bảo trường 'Bắt đầu trong' cũng trống.