you without when that sure run password nopasswd make entering bash shell alias sh

without - ¿Cómo ejecuto un script de shell sin usar los comandos "sh" o "bash"?



nopasswd sudo command (8)

Agregar (directorio actual) a su variable PATH.
Puede hacerlo editando su archivo .profile.
ponga la siguiente línea en su archivo .profile
PATH=$PATH:.

Solo asegúrate de agregar la línea Shebang ( #!/bin/bash ) al inicio de tu script y haz que el script sea ejecutable (usando chmod +x <File Name> ).

Tengo un script de shell que quiero ejecutar sin usar los comandos "sh" o "bash". Por ejemplo:

En lugar de: sh script.sh

Quiero usar: script.sh

¿Cómo puedo hacer esto?

PD (i) No uso demasiado el script de shell e intenté leer acerca de los alias, pero no entendí cómo usarlos.

(ii) También leí acerca de vincular el script con otro archivo en las variables PATH. Estoy usando mi servidor de la universidad y no tengo permisos para crear un archivo en esas ubicaciones.


Agregue un "shebang" en la parte superior de su archivo:

#!/bin/bash

Y haz que tu archivo sea ejecutable ( chmod +x script.sh ).

Finalmente, modifique su ruta para agregar el directorio donde se encuentra su script:

export PATH=$PATH:/appropriate/directory

(normalmente, desea $HOME/bin para almacenar sus propios scripts)


Aquí está mi script de copia de seguridad que le dará la idea y la automatización:

Servidor: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql, etc.

# Make Shell Backup Script - Bash Backup Script nano /home/user/bash/backupscript.sh #!/bin/bash # Backup All Start mkdir /home/user/backup/$(date +"%Y-%m-%d") sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.zip /etc -x "*apache2*" -x "*php*" -x "*mysql*" sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_apache2.zip /etc/apache2 sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.zip /etc/php sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.zip /etc/mysql sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.zip /var/www -x "*html*" sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.zip /var/www/html sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" # Backup All End echo "Backup Completed Successfully!" echo "Location: /home/user/backup/$(date +"%Y-%m-%d")" chmod +x /home/user/bash/backupscript.sh sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript

cambia / home / user a tu directorio de usuario y escribe: backupscript en cualquier parte del terminal para ejecutar el script. (suponiendo que / usr / bin esté en su camino)


En este ejemplo, el archivo se llamará myShell

Antes que nada tendremos que hacer este archivo, podemos comenzar escribiendo lo siguiente:

sudo nano myShell

¿Notamos que no pusimos la extensión .sh ? ¡Eso es porque cuando lo ejecutamos desde la terminal solo necesitaremos escribir myShell para ejecutar nuestro comando!

Ahora, en nano la línea superior DEBE ser #!/bin/bash entonces puede dejar una nueva línea antes de continuar.

Para la demostración, agregaré un Hello World! básico Hello World! respuesta

Entonces, escribo lo siguiente:

echo Hello World!

Después de eso mi ejemplo debería verse así:

#!/bin/bash echo Hello World!

Ahora guarde el archivo y luego ejecute este comando:

sudo chmod +x myShell

Ahora que hemos hecho el archivo ejecutable podemos moverlo a /usr/bin/ usando el siguiente comando:

sudo cp myShell /usr/bin/

Solo para asegurarnos de que la máquina pueda ejecutarla correctamente, tendremos que reiniciar la máquina

Utilicé sudo shutdown -r now

Felicidades! Nuestro comando ahora está listo! En la terminal podemos escribir myShell y debería decir Hello World!

Feliz codificación!


Estos son algunos de los requisitos previos para usar directamente el nombre del script:

  1. Agregue la línea sha-bang {#!/bin/bash) en la parte superior.
  2. El uso de chmod u+x scriptname hace que el script sea ejecutable.
  3. Coloque la secuencia de comandos en la carpeta /usr/local/bin .
  4. Ejecute el script usando solo el nombre del script.

Nota: La razón por la que sugerí colocarlo en la carpeta /usr/local/bin es porque lo más probable es que la ruta ya se haya agregado a su PATH variable .

Actualizar:

Si no tiene acceso a la carpeta /usr/local/bin , haga lo siguiente:

  1. Cree una carpeta en su directorio de inicio y vamos a llamarlo myscripts .
  2. Haga ls -lart en el directorio de inicio para identificar el script de inicio que está usando su shell. Debe ser .profile o .bashrc .
  3. Una vez que haya identificado el script de inicio, agregue la siguiente línea en su script - export set PATH=$PATH:~/myscript .
  4. Una vez agregado, ingrese el script de inicio o cierre la sesión y vuelva a iniciar sesión.
  5. Ejecute su script usando el nombre del script.

Puede escribir sudo install (nombre del script) / usr / local / bin / (lo que desea escribir para ejecutar dicho script)

ex: sudo install quickcommit.sh /usr/local/bin/quickcommit ingrese la contraseña

ahora puede ejecutarse sin .sh y en cualquier directorio


Solo asegúrate de que sea ejecutable, usando chmod +x . De forma predeterminada, el directorio actual no está en su RUTA, por lo que deberá ejecutarlo como ./script.sh , o bien hacer referencia a él mediante una ruta calificada. Alternativamente, si realmente necesita simplemente script.sh , deberá agregarlo a su RUTA. (Puede que no tenga acceso para modificar la ruta del sistema, pero es casi seguro que puede modificar la RUTA de su propio entorno actual.) Esto también asume que su secuencia de comandos comienza con algo como #!/bin/sh .

También podría seguir usando un alias, que no está realmente relacionado con las secuencias de comandos del shell, sino solo el shell, y es simple como:

alias script.sh=''sh script.sh''

Lo cual le permitiría usar simplemente script.sh (literalmente, esto no funcionará para ningún otro archivo *.sh ) en lugar de sh script.sh .


Tienes que habilitar el bit ejecutable para el programa.

chmod +x script.sh

Entonces puedes usar ./script.sh

Puede agregar la carpeta a la RUTA en su archivo .bashrc (ubicado en su directorio de inicio). Agregue esta línea al final del archivo:

export PATH=$PATH:/your/folder/here