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 exampley luegoexampledeberí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/binalmacenar sus propios scripts)fuente
source script.shfuncionó 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 scriptnamehacer el script ejecutable. (dóndescriptnameestá el nombre de tu script)/usr/local/bincarpeta.Nota: La razón por la que sugerí colocarlo debajo de la
/usr/local/bincarpeta 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/bincarpeta, haga lo siguiente:myscripts.ls -larten su directorio de inicio, para identificar la secuencia de comandos de inicio que utiliza su shell. Debería ser.profileo.bashrc.export set PATH=$PATH:~/myscript.scriptname.fuente
. .bashrc. Es decir, solo ponga.seguido despacey 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*.sharchivo) en lugar desh script.sh.fuente
aliascomando 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á
myShellEn primer lugar, tendremos que crear este archivo, podemos comenzar escribiendo lo siguiente:
¿Notaron que no pusimos la
.shextensión? ¡Eso es porque cuando lo ejecutamos desde la terminal solo necesitaremos escribirmyShellpara ejecutar nuestro comando!Ahora, en nano la línea superior DEBE ser
#!/bin/bashentonces 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 nowFelicidades! ¡Nuestro comando ya está hecho! En la terminal podemos escribir
myShelly debería decirHello World!fuente
/usr/bin: muchos sistemas funcionan/usr/local/binpara este propósito y se reservan/usr/binestrictamente para el sistema operativo.sudo chmodsu propio archivo.Debe habilitar el bit ejecutable para el programa.
Entonces puedes usar
./script.shPuede agregar la carpeta a la RUTA en su
.bashrcarchivo (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/quickcommitingrese 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.shpor ejemplo. copiarlo$HOME/bino$HOME/usr/binEl directorio puede ser diferente en diferentes distribuciones de Linux pero terminan con
'bin'y están en el directorio principalcd $HOME/bino$HOME/usr/binTipo
chmod 700 script.shY se puede ejecutar con tan sólo escribir
run.shen el terminal. Si no funciona, intente enchmod +x run.shlugar dechmod 700 run.shfuente
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-amd64si no, ejecute
chmod +x migrate.linux-amd64Luego 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