Directorio de trabajo incorrecto, si el script bash se abre haciendo doble clic

2

Escribí un script de bash para iniciar directamente el eclipse desde diferentes lugares de trabajo. Cada lugar de trabajo contiene el script, después de ejecutarlo, eclipse se inicia con el conjunto de espacios de trabajo correspondiente.

#!/bin/bash

# relative path
#ECLIPSE_DIR='../../'
ECLIPSE_DIR='/Users/mike/Development/java/'
ECLIPSE="${ECLIPSE_DIR}eclipse/eclipse.app"

AUTHOR='mike'

# current directory is workspace
WORKSPACE='pwd'
echo "WORKSPACE = $WORKSPACE"

# start eclipse from current directory
#open -n $ECLIPSE --args -data $WORKSPACE -vmargs -Duser.name='$AUTHOR'

El script está funcionando, cuando lo ejecuto desde el terminal. Pero cuando hago doble clic en él, usa el directorio principal como directorio de trabajo y, por lo tanto, comienza a eclipsar no desde el directorio que contiene el script.

Al parecer, los scripts se ejecutan desde ~/. , que es la causa de mi problema. ¿Qué puedo hacer para arreglar esto? ¿O cómo puedo cambiar mi script para obtener el comportamiento deseado?

    
pregunta mike 31.03.2015 - 19:42

1 respuesta

3

Si su secuencia de comandos se almacena en ~/workspaces/myproject/launch.sh y desea estar en ese directorio cuando ejecute, cambie a ese directorio, puede obtener el directorio donde se guarda la secuencia de comandos con este único forro:

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

Las primeras líneas de su script se convierten en:

#!/bin/bash
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd "${DIR}"
...the rest of your script...

Esto te pondrá en el directorio donde se almacena el script, sin importar cómo lo ejecutes.

Si desea obtener más información sobre cómo detectar la ubicación en el disco de un script en el momento de ejecución vea esta excelente respuesta de StackOverflow .

    
respondido por el Ian C. 31.03.2015 - 19:53

Lea otras preguntas en las etiquetas