Tengo un script de shell que quiero ejecutar sin usar los comandos "sh" o "bash". Por ejemplo:
En vez de: sh script.sh
Quiero usar: script.sh
¿Cómo puedo hacer esto?
PD (i) No uso mucho el script de shell e intenté leer sobre 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 el servidor de mi universidad y no tengo permisos para crear un archivo en esas ubicaciones.
$HOME/bin
, si aún no tiene uno, agréguelo a su RUTA (cerca del frente). Coloque los scripts (y cualquier otro programa) que desee ejecutar directamente sin especificar el nombre de ruta aquí, o los enlaces simbólicos aquí donde están los programas reales.mv example.sh example
y luegoexample
debería funcionar por sí solo.Respuestas:
Agregue un "shebang" en la parte superior de su archivo:
Y haga que su archivo sea ejecutable (
chmod +x script.sh
).Finalmente, modifique su ruta para agregar el directorio donde se encuentra su script:
(normalmente, desea
$HOME/bin
almacenar sus propios scripts)fuente
source script.sh
funcionó bien, o más biensource <filename_without_any_extension_type>
source ./my-cool-script
(o. ./my-cool-script
) contaminará la sesión de shell actual con cualquier variable definida en el script. El aprovisionamiento no debe usarse a menos que desee modificar explícitamente la sesión de shell configurando vars de entorno, cambiando el directorio, etc. De lo contrario, podrían producirse errores realmente terribles, ya que las variables de la ejecución de un script, si se realiza a través del aprovisionamiento, podrían afectar la ejecución de otro script../
, es posible que tenga una colisión de nombres. Intenta renombrar.Estos son algunos de los requisitos previos para usar directamente el nombre del script:
she-bang (#!/bin/bash)
línea en la parte superior.chmod u+x scriptname
hacer el script ejecutable. (dóndescriptname
está el nombre de tu script)/usr/local/bin
carpeta.Nota: La razón por la que sugerí colocarlo debajo de la
/usr/local/bin
carpeta es porque lo más probable es que esa ruta ya esté agregada a suPATH variable
.Actualizar:
Si no tiene acceso a la
/usr/local/bin
carpeta, haga lo siguiente:myscripts
.ls -lart
en su directorio de inicio, para identificar la secuencia de comandos de inicio que utiliza su shell. Debería ser.profile
o.bashrc
.export set PATH=$PATH:~/myscript
.scriptname
.fuente
. .bashrc
. Es decir, solo ponga.
seguido despace
y luego su nombre de script de inicio.Solo asegúrate de que sea ejecutable, usando
chmod +x
. De manera predeterminada, el directorio actual no está en su RUTA, por lo que deberá ejecutarlo como./script.sh
, o de lo contrario, hacer referencia a él por una ruta calificada. Alternativamente, si realmente necesita soloscript.sh
, necesitaría agregarlo a su RUTA. (Es posible 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 supone que su secuencia de comandos comienza con algo como#!/bin/sh
.También podría usar un alias, que no está realmente relacionado con el script de shell, sino solo el shell, y es simple como:
Lo que le permitiría usar simplemente
script.sh
(literalmente, esto no funcionará para ningún otro*.sh
archivo) en lugar desh script.sh
.fuente
alias
comando en el indicador de comandos de la shell y luego el alias estará disponible para ejecutar el comando.En este ejemplo, el archivo se llamará
myShell
En primer lugar, tendremos que crear este archivo, podemos comenzar escribiendo lo siguiente:
¿Notaron que no pusimos la
.sh
extensión? ¡Eso es porque cuando lo ejecutamos desde la terminal solo necesitaremos escribirmyShell
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é una
Hello World!
respuesta básicaEntonces, escribo lo siguiente:
Después de eso, mi ejemplo debería verse así:
Ahora guarde el archivo y luego ejecute este comando:
Ahora que hemos ejecutado el archivo, podemos moverlo
/usr/bin/
usando el siguiente comando:Solo para asegurarnos de que la máquina pueda ejecutarlo correctamente, necesitaremos reiniciar la máquina
solía
sudo shutdown -r now
Felicidades! ¡Nuestro comando ya está hecho! En la terminal podemos escribir
myShell
y debería decirHello World!
fuente
/usr/bin
: muchos sistemas funcionan/usr/local/bin
para este propósito y se reservan/usr/bin
estrictamente para el sistema operativo.sudo chmod
su propio archivo.Debe habilitar el bit ejecutable para el programa.
Entonces puedes usar
./script.sh
Puede agregar la carpeta a la RUTA en su
.bashrc
archivo (ubicado en su directorio de inicio). Agregue esta línea al final del archivo:fuente
Puede escribir sudo install (nombre del script) / usr / local / bin / (lo que desea escribir para ejecutar dicho script)
Ej:
sudo install quickcommit.sh /usr/local/bin/quickcommit
ingrese la contraseñaahora puede ejecutarse sin .sh y en cualquier directorio
fuente
Añadir (directorio actual) a su variable PATH.
Puede hacer esto editando su archivo .profile.
ponga la siguiente línea en su archivo .profile
PATH=$PATH:.
Solo asegúrese de agregar la línea Shebang (
#!/bin/bash
) al comienzo de su script y hacer que el script sea ejecutable (usandochmod +x <File Name>
).fuente
Aquí está mi script de respaldo que le dará la idea y la automatización:
Servidor: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql, etc.
cambie / home / user a su directorio de usuario y escriba: backupscript en cualquier lugar del terminal para ejecutar el script. (suponiendo que / usr / bin está en su camino)
fuente
Ingrese
"#!/bin/sh"
antes del script. Luego guárdelo como,script.sh
por ejemplo. copiarlo$HOME/bin
o$HOME/usr/bin
El directorio puede ser diferente en diferentes distribuciones de Linux pero terminan con
'bin'
y están en el directorio principalcd $HOME/bin
o$HOME/usr/bin
Tipo
chmod 700 script.sh
Y se puede ejecutar con tan sólo escribir
run.sh
en el terminal. Si no funciona, intente enchmod +x run.sh
lugar dechmod 700 run.sh
fuente
Hacer cualquier archivo como ejecutable
Supongamos que tiene un archivo ejecutable llamado migrate_linux_amd64 y desea ejecutar este archivo como un comando como "migrate"
Asegúrese de tener privilegios de ejecución en el archivo,
-rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
si no, ejecute
chmod +x migrate.linux-amd64
Luego copie su archivo a
/usr/local/bin
. Este directorio es propiedad de root, usa sudo o cambia a root y realiza la siguiente operaciónfuente
Sólo:
fuente