Respuestas:
Estás en Windows CMD.EXE (del mensaje de error). Utiliza una sintaxis diferente para ejecutar comandos. Deberá usarlo sh name.sh
, suponiendo que tenga instalado Cygwin o similar.
Para aclarar, Windows no tiene una utilidad incorporada para admitir archivos .sh. Para ejecutarlo, deberá instalar una herramienta de terceros como Cygwin .
Está intentando ejecutar un comando de Linux en el símbolo del sistema de Windows.
En Linux, la barra diagonal es un separador de ruta. En Windows, la barra diagonal inversa es un separador de ruta y la barra diagonal generalmente indica un argumento.
Por lo tanto, Windows cree que está intentando ejecutar un comando llamado "." y analizando el argumento "/name.sh". La convención correcta sería ". \ Name.sh". Además, Windows buscará automáticamente en el directorio actual su comando para que pueda escribir "name.sh".
El siguiente problema que enfrentará es que Windows no sabe qué es un script sh, nuevamente esto es algo de Linux. Puede resolver esto instalando Cygwin si realmente desea o necesita ejecutar un script sh.
Sin embargo, a juzgar por uno de sus comentarios anteriores, podría cambiar el nombre del script a name.bat y eliminar la línea "#! / Bin / sh". Ahora tiene un archivo Batch que Windows debería entender. Puede leer más sobre los archivos por lotes aquí .
Descargue e instale .git para Windows
Haga clic derecho en el escritorio y diga "git bash here"
Ejecute su script como en unix
¡Hecho!
Precaución: ¡Muchos comandos no funcionarán en Windows! Pero aún así, muchas de las cosas básicas funcionarán.
Si necesita ese script regularmente, puede crear un acceso directo (en su escritorio, por ejemplo):
Crea un acceso directo a mintty.exe
en tu escritorio
Edite las propiedades del acceso directo y cambie el objetivo (mantenga la ruta):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Estás tratando de hacer funcionar tu auto con jugo de naranja en lugar de gasolina. Windows comparte comandos similares almacenados en archivos .bat o .cmd con los scripts de shell Unix / Linux / zOS Unix Subsystem / * ix ya que estas dos familias de sistemas operativos comparten un antepasado común de las máquinas DEC PDP-x.
Si desea una gratificación instantánea, deberá instalar un entorno que proporcione un programa "sh.exe" o "csh.exe" o "bash.exe" (¿alguien tiene tsh.exe?)
Alternativamente, si conoce muy bien los comandos de script Unix y conoce muy bien los comandos de archivo .cmd y .bat de Windows, puede traducir el archivo .sh a un archivo .bat o .cmd. Aun así, a menudo encontrará más programas con estilo Unix que no tienen equivalente en Windows: grep, sed, vi, emacs, etc. Por lo tanto, la llamada para instalar CygWin (no minimalista), solo para obtener el shell y Unix herramientas. Póngalo en una unidad flash, para estas ocasiones especiales.
Alguien dijo algo sobre MS-DOS usando /
para comandos y \
para rutas. Esto es un poco engañoso. Mira mi ejemplo:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
No tiene diferencia en efecto. Sí, no es cierto para todas las operaciones: la respuesta real es simplemente No , o sin Cygwin o SSHD no se puede.
Sólo sé porque yo estúpidamente pasé medio día tratando de averiguar qué if then fi
y eval
, exec
hacer con -Djava.something
su llamado.
Usa Github para Windows. Contiene todos los ejecutables del entorno Unix.
Encontré una solución diferente y fácil, llamada UnixUtil .
Descargue y descomprímalo en C: unidad. Establezca la variable de entorno path
para incluir C:\UnixUtils\usr\local\wbin
.
Esto es importante. NO establezca la ruta aC:\UnixUtils\bin
Para completar, quiero mencionar una nueva característica de "Windows Subsystem for Linux" para Windows 10. Los detalles se describen en http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- bash-shell-on-windows-10 /
Tenga en cuenta que requiere activar el interruptor "Modo desarrollador" y habilitar la opción "Subsistema de Windows para Linux (Beta)".
Por mi parte, descubrí que la instalación de Git para Windows (que estoy usando de todos modos) es suficiente.
Este es un hilo antiguo pero para aquellos que ejecutan Windows 10. Simplemente abra las funciones de Windows desde el panel de control 'Activar o desactivar las características de Windows'
Elija la función 'Subsistema de Windows para Linux'. Después de la instalación, tiene 'Bash' e incluso puede configurar servidores nativos de Linux dentro de bash. Y, por supuesto, el comando sh, dentro de bash, también funciona.
Es posible que el problema esté realmente dentro del archivo name.sh
: está intentando usar el .
comando pero está intentando ejecutar una especie de shell (por ejemplo, csh
creo) en el que no es un comando válido.
Entonces: ¿ name.sh
comienza con el correcto #!/bin/sh
(si realmente está intentando ejecutar sh
)?
ok, hay MUCHO mal con eso: suelta #! / bin / sh, y cambia la extensión a bat, y podría funcionar con algunas correcciones más. Luego puede invocarlo también por su nombre de archivo.
La sintaxis de un script de shell de Unix y un archivo por lotes de Windows no son muy similares. cygwin, o un montón de jugar con unxutils podría hacer algo que funcione en ambos, pero a menos que esté ABSOLUTAMENTE seguro de que el entorno es siempre el mismo, no vale la pena el dolor de cabeza
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
¡¿Qué?! Sospecho que nunca probaste esto ... En Windows, incluso las capacidades de bash más simples no son compatibles o requieren una larga sintaxis.
Si tiene una caja de Linux en su hogar (o trabajo) y está conectada a la misma red, y esta red es segura, esto podría ser el truco:
mount //WinMachine/Share LinuxFolder
(IIRC, y requiere Samba ).Para ejecutar el script de shell desde las ventanas. Primero use el comando: dos2unix, luego puede usar su comando normal: sh runide.sh
Esto funcionará.
Aunque las respuestas existentes aquí eran correctos en el momento, Windows 10 hace ahora incluyen opcionalmente una versión modificada de Ubuntu ejecutar un shell bash completa .
Una vez que se hacen ejecutables, los scripts se pueden ejecutar de la forma habitual desde bash, por ejemplo:
chmod +x myscript.sh
./myscript.sh
Si desea ejecutar un script directamente desde Windows, puede crear un acceso directo en el mismo directorio y establecer el 'Destino' en algo como:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Si la ruta de su script es relativa a la ubicación del acceso directo (como en el ejemplo anterior), asegúrese de que el campo 'Iniciar en' también esté en blanco.