¿Cómo ejecutar el script en un directorio diferente?

51

Probé esto

./home/user/scripts/someScript

pero no funciona

El fichero o directorio no existe

¿algunas ideas?

Adaptador UA
fuente
2
Obviamente no existe tal archivo o directorio. Entonces das el camino equivocado. El punto allí no significa "ejecutar". Es solo parte del camino. En shell normalmente escribe archivos para ejecutar o comandos (que de hecho también son archivos) :)
Pithikos
deshazte de ese período de inicio e inténtalo de nuevo. Alternativamente, ~ / scripts / someScript también funcionará. también tenga en cuenta `` qoutes en mente, y los programas ejecutivos ($ man exec)
j0h

Respuestas:

61

El punto inicial en su comando significa "relativo al directorio actual". Elimínelo y se referirá a "el archivo someScripten el directorio /home/user/scripts:

/home/user/scripts/someScript

Si obtiene "Permiso denegado", es porque no tiene permisos suficientes para acceder al archivo en el directorio de otros usuarios o porque el archivo no es ejecutable. Para hacerlo ejecutable, ejecute:

chmod +x /home/user/scripts/someScript
Lekensteyn
fuente
35

Si su script necesita acceder a los recursos en la misma carpeta desde la que se está ejecutando, y lo ha especificado como rutas relativas, entonces su script se romperá.

Siempre agrego un cd $(dirname $0)al encabezado de mi script para que la carpeta que contiene el script sea la carpeta raíz.

naisanza
fuente
6

Eliminar el .

Si hace que el script sea ejecutable chmod 755 <nameofscript>para ejecutarlo, solo necesita escribir la ruta al script.

Cuando vea que ./scriptse usa, le dice al shell que el script está ubicado en el mismo directorio que lo está ejecutando. Para usar la ruta completa, escriba sh /home/user/scripts/someScript.

Bruno Pereira
fuente
sh /path/to/filees diferente de /path/to/file. shejecuta /bin/shque está vinculado a /bin/dash.
Lekensteyn
Simplemente aclarando algo en los ejemplos que ves en la red, normalmente ves sh ./somescriptque también se puede escribir como 'sh / path / to / script / scriptitself'.
Bruno Pereira