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

Escribí un script bash para comenzar directamente eclipse desde diferentes lugares de trabajo. Cada lugar de trabajo contiene el script, después de ejecutarlo, eclipse se inicia con el set de espacio de trabajo respectivo.

#!/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 la terminal. Pero cuando hago doble clic en él, utiliza el directory de inicio como directory de trabajo y, por lo tanto, no se eclipsa desde el directory que contiene el script.

Aparentemente 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 get el comportamiento deseado?

One Solution collect form web for “Directorio de trabajo incorrecto, si el script bash se abre haciendo doble clic”

Si su script se almacena en ~/workspaces/myproject/launch.sh y desea estar en ese directory cuando lo ejecuta, cambie a ese directory, puede get el directory donde se guarda el script con este liner:

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

Así que las primeras líneas de tu script se convierten en:

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

Esto lo colocará en el directory donde se almacena el script, sin importar cómo ejecute el script.

Si desea get más información sobre la detección de la location en el disco de un script en time de ejecución, vea esta excelente respuesta de StackOverflow .

  • ¿Cuáles son estas keys privadas?
  • Agregar input ARP estática al inicio
  • Ninguna de mis counts de administrador son usuarios sudo
  • ¿Cómo pasar de Spotlight a Alfnetworking a través de Terminal?
  • Nuevo atajo para upload una línea en Terminal en El Capitan
  • Dictar y hablar / leer text de la Terminal
  • ¿Cómo puedo cambiar la date de modificación de un enlace simbólico?
  • ¿Cómo puedo personalizar los enlaces simbólicos que MacPorts crea / elimina cuando usa su command `port select --set <group>`?
  • Reduzca la escala de una captura de pantalla de iMac 5K al 50% mediante la línea de command
  • Time Machine crea files y directorys en lugares aleatorios
  • Ejecutar command desde una marca de terminal actual
  • Cómo listr identificaciones de tarjetas de audio desde la terminal
  • ¿Qué hace mkdir -p? específicamente la parte "-p"?
  • Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).