Directory di lavoro errata, se lo script di bash viene aperto tramite doppio clic

2

Ho scritto uno script bash per avviare direttamente Eclipse da diversi luoghi di lavoro. Ogni luogo di lavoro contiene lo script, dopo averlo eseguito, eclipse viene avviato con il rispettivo spazio di lavoro.

#!/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'

Lo script funziona, quando lo eseguo dal terminale. Ma quando faccio doppio clic su di esso, utilizza la directory home come directory di lavoro e avvia quindi eclissi not dalla directory che contiene lo script.

Apparentemente gli script sono eseguiti da ~/. , che è la causa del mio problema. Cosa posso fare per risolvere questo problema? O come posso cambiare il mio script per ottenere il comportamento desiderato?

    
posta mike 31.03.2015 - 19:42
fonte

1 risposta

3

Se il tuo script è memorizzato in ~/workspaces/myproject/launch.sh e vuoi essere in quella directory quando esegui, passa a quella directory, puoi ottenere la directory in cui lo script è stato salvato con questa fodera:

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

Quindi le prime righe del tuo script diventano:

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

Questo ti metterà nella directory in cui è archiviato lo script, indipendentemente da come esegui lo script.

Se vuoi saperne di più sul rilevamento della posizione su disco di uno script in fase di esecuzione consulta questa eccellente risposta StackOverflow .

    
risposta data 31.03.2015 - 19:53
fonte

Leggi altre domande sui tag