Cuando intento ejecutar un archivo (nombre.sh) en la línea de comando con el comando ./name.sh, recibo el error de que:
"." no se reconoce como un comando interno o externo, archivo operable o por lotes
por favor ayúdame a ejecutar el archivo .sh
windows
shell-script
Broam
fuente
fuente
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í .
fuente
Alternativamente, puede pasar al lado oscuro e instalar Linux. Desde el aviso:
o
Su programa se ejecutará y también tendrá un mejor sistema.
fuente
La mejor solución en mi opinión:
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 escritorioEdite 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'
fuente
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.
fuente
Alguien dijo algo sobre MS-DOS usando
/
para comandos y\
para rutas. Esto es un poco engañoso. Mira mi ejemplo: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
yeval
,exec
hacer con-Djava.something
su llamado.fuente
Usa Github para Windows. Contiene todos los ejecutables del entorno Unix.
https://github-windows.s3.amazonaws.com/GitHubSetup.exe
fuente
Encontré una solución diferente y fácil, llamada UnixUtil .
Descargue y descomprímalo en C: unidad. Establezca la variable de entorno
path
para incluirC:\UnixUtils\usr\local\wbin
.Esto es importante. NO establezca la ruta a
C:\UnixUtils\bin
fuente
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.
fuente
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.
fuente
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 ejecutarsh
)?fuente
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
fuente
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 ).fuente
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á.
fuente
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:
Si desea ejecutar un script directamente desde Windows, puede crear un acceso directo en el mismo directorio y establecer el 'Destino' en algo como:
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.
fuente