¿Cómo ejecuto los scripts .sh?

344

Cada vez que abro un archivo .sh, lo abre en gedit en lugar del terminal. No puedo encontrar ninguna opción similar a Click derechoAbrir conOtra aplicación ...Terminal .

¿Cómo abro este archivo en la terminal?

Alex
fuente
¿Ese script tiene como objetivo configurar variables env para su uso posterior?
Rob
1
No debe usar extensiones en los scripts. En algún momento en el futuro, puede encontrar que un idioma diferente es más adecuado para realizar la tarea que está realizando su script actual. Y luego tienes un problema. ¿Mantiene el nombre antiguo, con una extensión completamente engañosa, o lo renombra, posiblemente teniendo que editar muchos lugares donde se usa su script?
geirha
No necesitas la extensión del archivo. Es bueno tenerlo pero no es necesario. El sistema operativo no mira la extensión del archivo. Mira los datos
ActionParsnip
55
Meh, si reescribe foo.sh en ruby, siempre puedes usar el archivo .sh para iniciarloruby foo.rb
glenn jackman
En Dolphin puede presionar F4 y se abre una consola
Motte001

Respuestas:

523

Otorgue permiso de ejecución a su script:

chmod +x /path/to/yourscript.sh

Y para ejecutar tu script:

/path/to/yourscript.sh

Como se .refiere al directorio actual: si yourscript.shestá en el directorio actual, puede simplificar esto para:

./yourscript.sh
karthick87
fuente
13
+1 solo responde para mostrar la adición de permisos de ejecución en una forma de terminal solamente.
Hailwood
83
Si lo hace, bash /path/to/yourscript.shentonces no necesitachmod +x
Aleksandr Levchuk
44
En realidad, puede usar . /path/to/yourscript.shsi el script tiene que configurar algunas variables de entorno.
Rob
1
Nadie menciona lo tradicional: ./path/to/yourscript.sh(sin el espacio después .)? Creo que este es el más simple y fácil de usar ... Pero de todos modos, aquí está mi alternativa que debería hacer casi lo mismo que ./haría, aunque no veo por qué no usarías ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... edita FILENAMEa tu gusto . También tenga en cuenta que shse utilizará si no hay alternativa.
MiJyn
88

Debe marcar los scripts de shell como ejecutables para ejecutarlos desde el administrador de archivos:

  1. Haga clic derecho en su .sharchivo y seleccione Propiedades :

    ingrese la descripción de la imagen aquí

  2. En la pestaña Permisos , marque Permitir ejecutar archivo como programa :

    ingrese la descripción de la imagen aquí

  3. Cierre la ventana Propiedades y haga doble clic en el archivo. Aparecerá un cuadro de diálogo que le dará la opción de ejecutar el script en una terminal:

    ingrese la descripción de la imagen aquí

Isaias
fuente
10
Esto no funciona en Ubuntu 13.04. Sigue abierto en gedit de todos modos, nunca me pide que ejecute. Editar: Nvm, imjustmatthew responde esto.
mpen
Antes de usar esto, debemos hacer que el archivo tenga permiso para ejecutarse usando chmod. chmod + x filename.sh o chmod 755 filename.sh
Arvind Rawat
No tengo popup! IDE se abre de inmediato, no es una ventana emergente
Verde
¿Cómo es que no puedo encontrar "ejecutar en terminal" en ninguna parte de mi interfaz? (Ubuntu 18.04)
Daniel Möller
1
@ DanielMöller, aquí está la respuesta a su pregunta. askubuntu.com/questions/38661/how-do-i-run-sh-files/…
Akhilesh Dhar Dubey
33

Abra una terminal y navegue a la carpeta donde .shse encuentra el archivo. Luego escriba:

sh <name of file>.sh
pie italiano
fuente
La mejor manera de abrir cualquier aplicación. Navegue al directorio .sh y luego ábralo en el símbolo del sistema. use sh <nombre del archivo como se muestra arriba> .sh si requiere permiso use chmod + x /path/to/yourscript.sh o haga clic derecho y cambie el permiso a todos
Durgesh Kumar
24

Requisito previo

Antes de que pueda ejecutar el archivo .sh, debe hacerlo ejecutable:

  1. Haga clic derecho en el archivo
  2. Seleccionar propiedades
  3. Seleccionar permisos
  4. Seleccione Permitir ejecutar archivo como programa

Advertencia

Asegúrese de confiar en la fuente de donde obtuvo el archivo. Podría ser un virus .

La manera muy simple

  1. Doble click en el archivo
  2. Haga clic en ejecutar en la terminal

Esto tiene un problema El terminal se cerrará inmediatamente y no podrá ver la salida.

La forma simple

  1. Aplicaciones abiertas -> Accesorios -> Terminal
  2. Arrastre y suelte el archivo .sh en la terminal y presione Entrar

La forma en que lo hacen los profesionales

  1. Aplicaciones abiertas -> Accesorios -> Terminal
  2. Encuentra dónde está el archivo .sh

    • Usa los comandos lsycd
    • lsenumerará los archivos y carpetas en la carpeta actual . Pruébalo: escribe "ls" y presiona Enter.
    • Una vez que vea la carpeta a la que desea ingresar, ejecute cd, seguido de un espacio, seguido de un nombre de carpeta
    • Si cuando en una carpeta que usted no quería, ejecute cd ..ir un nivel arriba
  3. Ejecute el archivo .sh

    • Una vez que pueda ver, por ejemplo, script1.shcon lsejecutar esto:

      ./script.sh

¿Por qué hacerlo de la manera complicada?

El terminal tiene un rico conjunto de herramientas poderosas a las que se puede acceder escribiendo los comandos. Los profesionales localizan el archivo .sh escribiendo lsy cd. Una vez que esté en la carpeta actual correcta , puede ejecutar el script de esta manera:

./script1.sh

o puede ejecutar y redirigir la salida a un archivo:

./script1.sh > out.txt

o puede filtrar la salida para palabras clave (por ejemplo, "manzanas") y luego redirigir a un archivo:

./script1.sh | grep apples > ./only-apples

Hay miles de cosas que puede hacer para ese archivo simplemente escribiendo algunos comandos.

Otro, puede descargar un archivo de Internet con un simple comando:

wget www.google.com/images/logos/ps_logo2.png

Y luego abra el archivo así:

shotwell ps_logo2.png
Aleksandr Levchuk
fuente
66
No estoy seguro de que La forma en que los profesionales lo hacen es correcta, es más un caso de forma sencilla la avanzada (para el control de la producción) forma
Hailwood
Es bueno saber que lo hice como lo hacen los profesionales en mi primera prueba. Pensé que era la forma básica del usuario.
NelsonGon
19

En Ubuntu 13.04, los archivos ejecutables abiertos en Nautilus ahora se abren en gedit de forma predeterminada en lugar de solicitar al usuario que los ejecute. Para habilitar el comportamiento clásico, debe ajustar las preferencias:

Nautilus → Menú Editar → Preferencias → pestaña Comportamiento → Haga clic en el botón de radio cerca de Preguntar cada vez.

imjustmatthew
fuente
La persona que hizo la pregunta está hablando de Ubuntu 10.10
edwin
1
¡¡¡Gracias!!! No sé por qué cambiarían esto, no podían encontrar la manera de ejecutar nada.
mpen
1
Esta es la respuesta correcta para el último ubuntus.
gaRex
¿Cómo se llega a Nautilus en 15.10?
Yaakov Ainspan
A partir de Ubuntu 18.04, puede acceder a las preferencias abriendo un directorio y luego haciendo clic en "Archivos -> Preferencias" en la barra superior.
tparker
7

Vaya al directorio donde está el .sharchivo usando cd. En este ejemplo, he almacenado mi sharchivo como~/Desktop/shell_practice/test.sh

primero hazlo pwdpara averiguar dónde estás, y si vuelve /home/username(dónde usernameestá tu nombre de usuario real), puedes ejecutar

cd Desktop/shell/practice

Si parece estar en otro lugar, puede usar la ruta absoluta

cd ~/Desktop/shell/practice

o

cd $HOME/Desktop/shell/practice

o incluso

cd /home/$USER/Desktop/shell/practice

Estas son todas formas de describir el mismo lugar. Una vez que haya llegado a la ubicación de su script, escriba

ls

Si puede ver el sharchivo en la salida, puede usarlo chmodpara hacerlo ejecutable. En mi caso, recuerda, el nombre del archivo es test.sh, así que correría

chmod u+x test.sh

Ahora que estamos en el mismo directorio que el script, tenemos que especificar al shell que queremos ejecutar el archivo dando su ubicación ./(el directorio actual seguido de un separador de ruta, para distinguirlo del nombre del archivo). Para ejecutar mi archivo, escribiría:

./test.sh

Si su script ha sido escrito correctamente, se ejecutará sin errores ...

Aquí hay un ejemplo en vivo: Aquí hay un ejemplo en vivo

El exorcista
fuente
Esto funcionó para mí para instalar Netbeans en ubuntu
RuD3B0y
1
Wb, @ RuD3B0y, traté de mantener las respuestas mejores para los novatos, sin contenido de alta tecnología, si tienes algunas ediciones, eres bienvenido.
TheExorcist
4

2 pasos principales.

  1. en la terminal, use gedit para escribir y guardar el script con la extensión ".sh" en el escritorio. (pero se puede usar cualquier editor de texto)

  2. abra Nautilus y haga clic derecho en el archivo script.sh.

    • bajo propiedades, marque la casilla "permitir ejecutar archivo ..."

    • en el menú de Nautilus, haga clic en archivo, luego en preferencias, luego en comportamiento

    • marque "ejecutar archivos de texto ejecutables cuando se abren".

Ahora, cuando hace doble clic en el archivo en el escritorio, debería ejecutarse. no es necesario .o./

robar
fuente
3
  1. Haga clic derecho en el .sharchivo y hágalo ejecutable.

  2. Abrir una terminal ( Ctrl+ Alt+ T).

  3. Arrastre el .sharchivo a la ventana del terminal y mire con asombro.

1p_bunny
fuente
1
Bienvenido a Ask Ubuntu! Recomiendo editar esta respuesta para expandirla con detalles específicos sobre cómo hacer el primer paso. (Consulte también ¿Cómo escribo una buena respuesta? Para obtener consejos generales sobre qué tipos de respuestas se consideran más valiosas en AskUbuntu.)
David Foerster
3

Hay algunas formas de hacer esto.

Opción 1

  1. En la terminal, acceda al directorio en el que se encuentra el archivo Bash cd(cambiar directorio).

    Ex. cd Downloads

  2. correr bash <filename>.sh

    Esto también funciona con archivos .run. Hay un ejemplo de este uso en esta página web sobre la actualización de Rhythmbox.

opcion 2

  1. En la terminal, navegue al directorio en el que se encuentra el archivo bash.

  2. correr chmod +x <filename>.sh

  3. En Nautilus, abra el archivo.

Kenny Stier
fuente
3

Para Ubuntu 18.04 , hay una pequeña modificación, ya que no aparece un cuadro de diálogo emergente.

Entonces, lo que debe hacer es:

Haga clic derecho en Archivos, seleccione Preferencias> Seleccione la pestaña Comportamiento> Marque la opción 'Preguntar qué hacer' en Archivo de texto ejecutable.

Ahora, cuando hace doble clic en cualquier archivo .sh, aparecerá una ventana emergente, allí puede seleccionar la opción "ejecutar en terminal" para ejecutar su archivo .sh.

ingrese la descripción de la imagen aquí

Akhilesh Dhar Dubey
fuente
2

En Ubuntu 16.04, así es como abrirlo en la Terminal:

Vaya a File Manager > Edit > Preferences > Behaviorpara Executable Text Filesy seleccione Ask each time.

El problema es que está configurado de forma predeterminada en View Executable Files when they are opened.

Leniel Maccaferri
fuente
1

Si coloca su script de shell u otro ejecutable que cree en / usr / local / bin, se encontrará y ejecutará sin tener que proporcionar una ruta de carpeta en la línea de comando o agregar ./ ​​al nombre. Por ejemplo, creé el siguiente script bash simple de 3 líneas para mostrar los UUID de disco:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Llamé al archivo uuid y lo coloqué en / usr / local / bin. Todo lo que necesito para ingresar en la línea de comando es:

uuid
fragos
fuente
0

Bueno, yo también enfrenté el mismo problema. Quería ejecutar el archivo .sh y se abrió con Gedit en CentOS 7. Entonces, esto es lo que hice:

  1. Navegué hasta la ruta del .sharchivo que quería ejecutar.
  2. Abrí la terminal.
  3. Y simplemente arrastré y solté la ventana del terminal y automáticamente tomó ese archivo junto con la ruta como entrada.
  4. ¡Presiona Enter y listo!
Jen Bates
fuente
0

El problema que he encontrado en algunas distribuciones es que han ocultado la opción de preferencias en Nautilus, pero arreglarlo en Ubuntu y otras distribuciones usando Gnome3 es el mismo (literalmente acabo de hacer la versión de Fedora y publiqué la solución real para recordarme) como en el futuro).

  1. Instalar en pc dconf-editor

    sudo apt-get install dconf-editor
  2. Ejecutar dconf-editorusando la cuenta de usuario en la que desea esto, es decir, NO root

    dconf-editor
  3. Navegue al siguiente esquema:

    org.gnome.nautilus.preferences

  4. Cambie la opción predeterminada para que no se abra de manera predeterminada:

    Encuentra haz executable-text-activationclic en la palabra displayy cambia aask

eso le dará la opción de editar, ver o ejecutar el archivo en el futuro

Snider
fuente
0

Soy un novato en Linux y tuve el mismo problema. Si todo lo demás falla:

  1. Terminal abierta
  2. Abra la carpeta que contiene el archivo .sh
  3. Arrastra y suelta el archivo en la ventana del terminal
  4. La ruta del archivo aparece en la terminal. Presione Enter.
  5. Voila, se ejecuta su archivo .sh.
Linux_noob
fuente
-2

También puedes usar .trucos, con la sugerencia de otras respuestas.

Por ejemplo:

chmod +x filename.sh, suponiendo que ya haya ido a la ruta del archivo, ejecute el archivo con cualquiera de estos comandos:

sh filename.sh

./filename.sh

. filename.sh
Awais
fuente
2
advertencia : estos tres comandos no son equivalentes. Si su shebang hace referencia a un binario diferente (como Stack), el tercer comando intentará analizar los argumentos con Bash, lo que fallará.
Jezen Thomas