Tengo dos archivos de script de shell con exactamente los mismos permisos, etc. Puedo ejecutar uno de ellos simplemente dando su nombre en la línea de comando, pero para el otro debo usar sh o ./ para ejecutarlo. ¿Cuál es la razón?
Respuesta1
Lo más probable es que los 2 scripts estén en directorios diferentes. Uno de los directorios está en la RUTA mientras que el otro no.
Puede usar el type
comando para probar si un archivo está presente en la ruta $PATH de su shell actual.
$ type start_dropbox.bash
start_dropbox.bash is /home/saml/bin/start_dropbox.bash
Vea estas preguntas y respuestas de U&L "¿Cómo pruebo si existe una aplicación en $PATH?" para una cobertura más completa.
Respuesta2
Si solo estás dando el nombre del script y funciona, entonces lo tienes en tu /usr/bin/ /usr/sbin o lo que sea. Todo depende de cuál sea tu camino.
Hacer esto:
1. echo $PATH
Si su script está en alguno de esos directorios, se ejecutará sin utilizar la ruta absoluta.
2. whereis "scripts name"
Whereis o "cuál" le dirá dónde está ubicado. Es posible que incluso haya otorgado derechos de ejecución a un archivo y no al otro. Para el que no se ejecuta solo con el nombre, haga un chmod u+x
- Es posible que deba agregar #!/usr/bin/env python si es un script de Python o #!/usr/bin/env bash si es bash, etc.