Si ya está en el /path/to directorio, por ejemplo, con el cd /path/tocomando, puede ingresar ./scriptpara ejecutar su script.No olvide, en este caso, el './' antes del 'script'
FrViPofm
120
Otra forma más de ejecutarlo (esta vez sin configurar los permisos de ejecución):
Esto solo funcionará si el script tiene configurado el bit de ejecución. Probablemente sea necesario abordarlo.
Bryan Oakley
./scriptname.shtrabaja para mi pero scriptname.shda scriptname.sh: command not found. -rwxr-xr-xson sus permisos.
Spikatrix
1
El consejo a cdcualquier parte comete otro malentendido común para principiantes. A menos que la secuencia de comandos internamente tenga dependencias que requieran que se ejecute en un directorio en particular (por ejemplo, la necesidad de leer un archivo de datos que la secuencia de comandos inexplicablemente no proporciona una opción para apuntar), nunca debería necesitar ir a cdningún lugar para ejecutarlo, y muy a menudo no querrá.
Downvote: Eso es incorrecto si es correctamente un script Bash.
tripleee
1
Voto a favor: Esto está bien en Mac OS X si su script bash está en el mismo directorio
Karl Taylor
30
@kot "Resulta que me funciona" está muy lejos de "esta es una respuesta correcta". Se puede trabajar si shes un enlace simbólico bash, o si la secuencia de comandos no utiliza cualquier construcción específica de Bash. En el primer caso, usar en bashlugar de shes la única solución portátil correcta; en el último caso, no es la respuesta correcta a esta pregunta en particular, porque el OP pidió consejos para un script Bash específicamente. Perpetrar una respuesta incorrecta es irresponsable; los usuarios que no logran captar la diferencia publican frecuentemente aquí, y necesitan que se les muestre por qué esta respuesta "funcionó para mí" no funcionó para ellos.
@kot Repito: hay situaciones en las que esto funciona (tal como lo descubrió) pero no es una respuesta correcta en el caso general a la pregunta del título. Como mínimo, esta respuesta debería explicar las condiciones en las que funciona; pero mi sugerencia sería simplemente eliminar esta respuesta.
tripleee
14
En primer lugar hay que hacerlo ejecutable usando: chmod +x name_of_your_file_script.
Después de hacerlo ejecutable, puede ejecutarlo usando ./same_name_of_your_file_script
No hay necesidad de ir a cdningún lado; puede especificar un nombre de ruta arbitrariamente complejo como argumento bash; de hecho, cualquier programa que tenga un argumento de nombre de archivo funciona de esta manera (o está terriblemente roto).
tripleee
10
Este es un hilo antiguo, pero lo encontré y me sorprende que nadie haya dado una respuesta completa todavía. Así que aquí va ...
¡El tutorial de ejecución de un script de línea de comandos!
P: ¿Cómo ejecuto esto en Terminal?
Confusiones y conflictos:
Usted no necesita una 'extensión' (como .sh o .py o cualquier otra cosa), pero ayuda a controlar las cosas. No dolerá. Sin embargo, si el nombre del script contiene una extensión, debe utilizarla.
No es necesario estar en ningún directorio determinado por ningún motivo.
No es necesario que escriba el nombre del programa que ejecuta el archivo (BASH o Python o lo que sea) a menos que lo desee. No dolerá.
No es necesario sudoque haga nada de esto. Este comando está reservado para ejecutar comandos como otro usuario o un usuario 'root' (administrador). Gran publicación aquí .
(Una persona que recién está aprendiendo a ejecutar scripts no debería usar este comando a menos que exista una necesidad real, como instalar un nuevo programa. Un buen lugar para poner sus scripts es en su carpeta ~ / bin. Puede llegar allí escribiendo cd ~/bino cd $HOME/bindesde el indicador de la terminal. Tendrás permisos completos en esa carpeta).
Para "ejecutar este script" desde la terminal en un sistema de tipo Unix / Linux, debe hacer tres cosas:
Dígale al sistema la ubicación del script. (elegir uno)
Escriba la ruta completa con el nombre del script (por ejemplo /path/to/script.sh). Puede verificar la ruta completa escribiendo pwdo echo $PWDen la terminal.
Ejecute desde el mismo directorio y utilícelo ./para la ruta (por ejemplo ./script.sh). Fácil.
Coloque el script en un directorio que esté en el sistema PATHy simplemente escriba el nombre (por ejemplo script.sh). Puede verificar el sistema PATHescribiendo echo $PATHo echo -e ${PATH//:/\\n}si desea una lista más ordenada.
Dígale al sistema que el script tiene permiso para ejecutarse. (elegir uno)
Establezca el "bit de ejecución" escribiendo chmod +x /path/to/script.shen la terminal.
También puede utilizar chmod 755 /path/to/script.shsi prefiere los números. Hay una gran discusión con un gráfico genial aquí .
Dígale al sistema el tipo de script. (elegir uno)
Escriba el nombre del programa antes del script. (p. ej., BASH /path/to/script.sho PHP /path/to/script.php) Si el script tiene una extensión, como .php o .py, es parte del nombre del script y debe incluirlo.
Use un shebang , que veo que tiene ( #!/bin/bash) en su ejemplo. Si tiene eso como la primera línea de su script, el sistema usará ese programa para ejecutar el script. No es necesario escribir programas ni utilizar extensiones.
Utilice un shebang "portátil" . También puede hacer que el sistema elija la versión del programa que está primero en el PATHuso #!/usr/bin/envseguido del nombre del programa (por ejemplo, #!/usr/bin/env basho #!/usr/bin/env python3). Hay pros y contras que se analizan a fondo aquí .
Muy buen resumen. Tal vez, en el último ejemplo, recuerde a las personas que script.shy script.phpson los nombres de archivo literales de estos scripts, y que si pones una extensión en el nombre del archivo, debes incluirla cuando ejecutes el script (y viceversa; si el script no lo hace) No tengo una extensión, no ponga una). Esto es diferente, por ejemplo, de DOS, donde puede omitir .bato .exedel nombre del archivo, y los archivos deben tener una extensión de un conjunto pequeño para que se consideren ejecutables.
tripleee
1
Otro error de principiante común está entendiendo mal la diferencia entre path, /path, ./path, y ~/path. Supongo que probablemente no quieras explicarlo aquí, pero tal vez un enlace a una explicación como ... oh diablos, tuve que publicar esto.
Esto ejecuta la secuencia de comandos en el shell actual, que debe llamarse. Esto no es lo que la mayoría de la gente espera que suceda cuando simplemente ejecuta un script. Esto puede tener efectos secundarios en su entorno actual.
Ingeniero de software
-2
Si se encuentra en un directorio o carpeta donde el archivo de secuencia de comandos está disponible, simplemente cambie el permiso del archivo en modo ejecutable haciendo
chmod +x your_filename.sh
Después de eso, ejecutará el script usando el siguiente comando.
$ sudo ./your_filename.sh
Sobre el "." representan el directorio actual. ¡Nota! Si no se encuentra en el directorio donde está presente el archivo de script bash, cambie el directorio donde se encuentra el archivo utilizando
cd Directory_name/write the complete path
mando. De lo contrario, su secuencia de comandos no se puede ejecutar.
Espero que todos hagan esto porque menciono todos los conceptos relacionados con este problema en particular.
Hassan Shamshir
Como se explica en otras respuestas aquí, sudoestá mal y potencialmente terriblemente mal si lo usa en un script que no es de confianza y que abusa de los poderes que le dio innecesariamente.
Triplee el
El consejo de cdalguna parte es difícil de entender, pero probablemente también incorrecto.
chmod +x scriptname
y luego./scriptname
.Respuestas:
$prompt: /path/to/script
y presione enter. Tenga en cuenta que debe asegurarse de que el script tenga permisos de ejecución.fuente
/path/to
directorio, por ejemplo, con elcd /path/to
comando, puede ingresar./script
para ejecutar su script.No olvide, en este caso, el './' antes del 'script'Otra forma más de ejecutarlo (esta vez sin configurar los permisos de ejecución):
fuente
cd al directorio que contiene el script, o colócalo en una carpeta bin que está en tu $ PATH
luego escribe
si en el mismo directorio o
si está en la carpeta bin.
fuente
./scriptname.sh
trabaja para mi peroscriptname.sh
dascriptname.sh: command not found
.-rwxr-xr-x
son sus permisos.cd
cualquier parte comete otro malentendido común para principiantes. A menos que la secuencia de comandos internamente tenga dependencias que requieran que se ejecute en un directorio en particular (por ejemplo, la necesidad de leer un archivo de datos que la secuencia de comandos inexplicablemente no proporciona una opción para apuntar), nunca debería necesitar ir acd
ningún lugar para ejecutarlo, y muy a menudo no querrá.Podrías hacerlo:
sh scriptname.sh
fuente
sh
es un enlace simbólicobash
, o si la secuencia de comandos no utiliza cualquier construcción específica de Bash. En el primer caso, usar enbash
lugar desh
es la única solución portátil correcta; en el último caso, no es la respuesta correcta a esta pregunta en particular, porque el OP pidió consejos para un script Bash específicamente. Perpetrar una respuesta incorrecta es irresponsable; los usuarios que no logran captar la diferencia publican frecuentemente aquí, y necesitan que se les muestre por qué esta respuesta "funcionó para mí" no funcionó para ellos.En primer lugar hay que hacerlo ejecutable usando:
chmod +x name_of_your_file_script
.Después de hacerlo ejecutable, puede ejecutarlo usando
./same_name_of_your_file_script
fuente
Cambie su directorio donde se encuentra el script usando el comando cd
Luego escribe
fuente
cd
ningún lado; puede especificar un nombre de ruta arbitrariamente complejo como argumentobash
; de hecho, cualquier programa que tenga un argumento de nombre de archivo funciona de esta manera (o está terriblemente roto).Este es un hilo antiguo, pero lo encontré y me sorprende que nadie haya dado una respuesta completa todavía. Así que aquí va ...
¡El tutorial de ejecución de un script de línea de comandos!
P: ¿Cómo ejecuto esto en Terminal?
Confusiones y conflictos:
sudo
que haga nada de esto. Este comando está reservado para ejecutar comandos como otro usuario o un usuario 'root' (administrador). Gran publicación aquí .(Una persona que recién está aprendiendo a ejecutar scripts no debería usar este comando a menos que exista una necesidad real, como instalar un nuevo programa. Un buen lugar para poner sus scripts es en su carpeta ~ / bin. Puede llegar allí escribiendo
cd ~/bin
ocd $HOME/bin
desde el indicador de la terminal. Tendrás permisos completos en esa carpeta).Dígale al sistema la ubicación del script. (elegir uno)
/path/to/script.sh
). Puede verificar la ruta completa escribiendopwd
oecho $PWD
en la terminal../
para la ruta (por ejemplo./script.sh
). Fácil.PATH
y simplemente escriba el nombre (por ejemploscript.sh
). Puede verificar el sistemaPATH
escribiendoecho $PATH
oecho -e ${PATH//:/\\n}
si desea una lista más ordenada.Dígale al sistema que el script tiene permiso para ejecutarse. (elegir uno)
chmod +x /path/to/script.sh
en la terminal.chmod 755 /path/to/script.sh
si prefiere los números. Hay una gran discusión con un gráfico genial aquí .Dígale al sistema el tipo de script. (elegir uno)
BASH /path/to/script.sh
oPHP /path/to/script.php
) Si el script tiene una extensión, como .php o .py, es parte del nombre del script y debe incluirlo.#!/bin/bash
) en su ejemplo. Si tiene eso como la primera línea de su script, el sistema usará ese programa para ejecutar el script. No es necesario escribir programas ni utilizar extensiones.PATH
uso#!/usr/bin/env
seguido del nombre del programa (por ejemplo,#!/usr/bin/env bash
o#!/usr/bin/env python3
). Hay pros y contras que se analizan a fondo aquí .fuente
script.sh
yscript.php
son los nombres de archivo literales de estos scripts, y que si pones una extensión en el nombre del archivo, debes incluirla cuando ejecutes el script (y viceversa; si el script no lo hace) No tengo una extensión, no ponga una). Esto es diferente, por ejemplo, de DOS, donde puede omitir.bat
o.exe
del nombre del archivo, y los archivos deben tener una extensión de un conjunto pequeño para que se consideren ejecutables.path
,/path
,./path
, y~/path
. Supongo que probablemente no quieras explicarlo aquí, pero tal vez un enlace a una explicación como ... oh diablos, tuve que publicar esto.Y una forma más
¿Cuál es el significado del punto?
fuente
Si se encuentra en un directorio o carpeta donde el archivo de secuencia de comandos está disponible, simplemente cambie el permiso del archivo en modo ejecutable haciendo
chmod +x your_filename.sh
Después de eso, ejecutará el script usando el siguiente comando.
$ sudo ./your_filename.sh
Sobre el "." representan el directorio actual. ¡Nota! Si no se encuentra en el directorio donde está presente el archivo de script bash, cambie el directorio donde se encuentra el archivo utilizando
cd Directory_name/write the complete path
mando. De lo contrario, su secuencia de comandos no se puede ejecutar.
fuente
sudo
está mal y potencialmente terriblemente mal si lo usa en un script que no es de confianza y que abusa de los poderes que le dio innecesariamente.cd
alguna parte es difícil de entender, pero probablemente también incorrecto.