Відповіді:
Ви знаходитесь у Windows CMD.EXE (із повідомлення про помилку). Він використовує інший синтаксис для виконання команд. Вам потрібно буде скористатися sh name.sh
, якщо припустити, що у вас встановлено Cygwin або подібне.
Для уточнення, Windows не має вбудованої утиліти для підтримки .sh файлів. Для запуску таких програм вам потрібно буде встановити сторонній інструмент, такий як Cygwin .
Ви намагаєтеся запустити команду Linux у командному рядку Windows.
У Linux пряма коса риса є роздільником шляху. У Windows зворотна косою рисою є роздільником шляху, а косою рисою вперед зазвичай вказується аргумент.
Тому Windows вважає, що ви намагаєтеся запустити команду під назвою "." і аналізує його аргумент "/name.sh". Правильною умовою буде ". \ Name.sh". Крім того, Windows автоматично здійснює пошук у поточній папці для вашої команди, щоб ви могли просто ввести "name.sh".
Наступна проблема, з якою вам доведеться зіткнутися, полягає в тому, що Windows не знає, що таке скрипт, і знову це справа Linux. Ви можете вирішити це, встановивши Cygwin, якщо дійсно хочете або потрібно запустити скрипт sh.
Однак, судячи з одного з ваших попередніх коментарів, ви можете так само добре перейменувати сценарій в name.bat та видалити рядок "#! / Bin / sh". Тепер у вас є Batch-файл, який має розуміти Windows. Більше про пакетні файли ви можете прочитати тут .
Крім того, ви можете звернутися до темної сторони та встановити Linux. З підказки:
sh runide.sh
або
sudo sh runide.sh
Ваша програма буде працювати, і ви також матимете кращу систему.
Завантажте та встановіть .git для Windows
Клацніть правою кнопкою миші на робочому столі та скажіть "git bash here"
Виконайте свій сценарій, як в unix
Готово!
Увага: багато команд не працюватимуть на windows! Але все-таки багато основного матеріалу спрацює.
Якщо вам потрібен цей сценарій регулярно, ви можете створити ярлик (на робочому столі, наприклад):
Створіть ярлик до mintty.exe
на робочому столі
Відредагуйте властивості ярлика та змініть ціль (збережіть шлях):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Ви намагаєтеся керувати автомобілем на апельсиновому соку замість бензину. Windows ділиться аналогічними командами, що зберігаються у файлах .bat або .cmd за допомогою скриптів оболонки Unix / Linux / zOS Unix / * ix оболонки, оскільки ці дві родини операційних систем мають спільного предка DEC PDP-x-машин.
Якщо ви хочете миттєвого задоволення, вам потрібно буде встановити середовище, яке забезпечує програму "sh.exe" або "csh.exe" або "bash.exe" (кого-небудь tsh.exe?)
Крім того, якщо ви знаєте команди скриптів Unix, дуже добре, і ви знаєте команди Windows .cmd і .bat файли, дуже добре, ви можете перевести .sh файл у .bat або .cmd файл. Незважаючи на це, ви часто будете стикатися з більшою кількістю програм у стилі Unix, які не мають еквівалента під Windows - grep, sed, vi, emacs тощо. Отже, заклик встановити CygWin (не мінімалістичний) - просто для отримання оболонки та Unix інструменти. Поставте його на флешку, для цих особливих випадків.
Хтось сказав щось про MS-DOS, який використовується /
для команд та \
шляхів. Це трохи вводить в оману. Подивіться на мій приклад:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Не має різниці в ефекті. Так, це неправда для всіх операцій - фактична відповідь просто Ні , або без Cygwin або SSHD ви не можете.
Я тільки знаю , тому що я тупо витратив півдня , намагаючись з'ясувати , що if then fi
і eval
, exec
робити з -Djava.something
при виклику.
Використовуйте Github для Windows. Він містить усі виконувані файли середовища Unix.
Я знайшов інше і просте рішення під назвою UnixUtil .
Завантажте та розпакуйте його на C: drive. Встановіть змінну середовища path
для включення C:\UnixUtils\usr\local\wbin
.
Це важливо. НЕ встановлюйте шлях доC:\UnixUtils\bin
Для повноти хочу зазначити нову функцію «Підсистема Windows для Linux» для Windows 10. Деталі описані в http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- bash-shell-on-windows-10 /
Зауважте, що для цього потрібно активувати перемикач «Режим розробника» та ввімкнути опцію «Підсистема Windows для Linux (Beta)».
Для себе я виявив, що встановлення Git для Windows (що я все одно використовую) є достатнім.
Це стара тема, але для тих, хто працює з ОС Windows 10. Просто відкрийте вікна функцій на панелі керування "Увімкнення та вимкнення функцій Windows"
Виберіть функцію "Підсистема Windows для Linux". Після встановлення у вас є "Bash", і ви навіть можете налаштувати рідні сервери Linux в межах bash. І звичайно, команда sh в межах bash також працює.
Можливо, проблема насправді знаходиться у файлі name.sh
- ви намагаєтеся використовувати .
команду, але вона намагається запустити такий тип оболонки (наприклад csh
, я думаю), в якому це не є дійсною командою.
Отже: name.sh
починається з правильного #!/bin/sh
(якщо ви насправді намагаєтеся запустити sh
)?
ОК, в цьому немало неправильно - скиньте #! / bin / sh і поміняйте розширення на bat, і це може працювати з ще кількома виправленнями. Тоді ви можете просто викликати його також за своїм ім'ям файлу.
Синтаксис сценарію оболонки unix та пакетного файлу Windows не дуже схожі. cygwin, або навантаження возитися з непридатними засобами може зробити щось, що може працювати і в обох, але якщо ви АБСОЛЮТНО впевнені, що навколишнє середовище завжди те саме, головний біль
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
Що?! Я підозрюю, що ви ніколи цього не пробували ... У Windows навіть найпростіші можливості bash не підтримуються або потребують тривалого синтаксису.
Якщо у вас вдома (або на роботі) є вікно Linux та підключений до тієї ж мережі, і ця мережа безпечна, це може зробити трюк:
mount //WinMachine/Share LinuxFolder
(IIRC і вимагає Samba ).Запуск сценарію оболонки з Windows. Спочатку скористайтеся командою: dos2unix, потім ви можете використовувати звичайну команду: sh runide.sh
Це вийде.
Незважаючи на те, що існуючі відповіді тут були правильними в той час, Windows 10 має в даний час не обов'язково включати в себе модифіковану версію Ubuntu працює повний Баш оболонку .
Після виконання виконуваного сценарію можна запускати звичайний спосіб зсередини bash, наприклад:
chmod +x myscript.sh
./myscript.sh
Якщо ви хочете запустити сценарій безпосередньо з Windows, ви можете створити ярлик у тому самому каталозі і встановити "Ціль" на щось подібне:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Якщо шлях вашого сценарію відповідає розташуванню ярлика (як, наприклад, приклад вище), переконайтеся, що поле "Почати в" також порожнє.