9 votos

Mal directorio de trabajo, si un script de bash que se abre a través de doble clic

Escribí un script en bash para iniciar directamente el eclipse de diferentes lugares de trabajo. Cada lugar de trabajo contiene la secuencia de comandos, después de ejecutarlo, eclipse se inicia con la respectiva área de trabajo conjunto.

#!/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 guión es de trabajo, cuando lo ejecuto desde el terminal. Pero cuando me haga doble clic en él, se utiliza el directorio como directorio de trabajo y por lo tanto comienza eclipse no desde el directorio que contiene el script.

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

12voto

shsteimer Puntos 8749

Si la secuencia de comandos se almacenan en ~/workspaces/myproject/launch.sh , y quiere estar en ese directorio al ejecutar, cambiar a ese directorio, se puede obtener el directorio donde se guarda la secuencia con esta línea:

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

Así que las primeras líneas de su guión se convierte en:

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

Esto le pondrá en el directorio donde está el script se almacena no importa cómo su ejecute la secuencia de comandos.

Si usted desea aprender más acerca de la detección de la ubicación en el disco de una secuencia de comandos en tiempo de ejecución, ver este excelente respuesta de StackOverflow.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X