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


4

Ho scritto uno script bash per avviare direttamente l'eclissi da diversi luoghi di lavoro. Ogni posto di lavoro contiene lo script, dopo averlo eseguito, eclipse viene avviato con il rispettivo set di aree 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 quindi inizia eclissi non dalla directory che contiene lo script.

Apparentemente gli script vengono 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?


Pensavo che gli script fossero eseguiti da/
Mark

Perché non eclissare, quindi quando si avvia mostra un elenco di aree di lavoro e scegline uno - penso che avresti bisogno di un Applescript per farlo in quanto è necessario ottenere la directory dal Finder
Segna il

Risposte:


7

Se lo script è archiviato in ~/workspaces/myproject/launch.she si desidera trovarsi in quella directory durante l'esecuzione, passare a quella directory, è possibile ottenere la directory in cui è salvato lo script con questa riga:

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

Quindi le prime righe della tua sceneggiatura diventano:

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

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

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


1
OP vuole che la directory dell'area di lavoro non lo script della shell
Mark

1
@Mark Lo script della shell si trova nella stessa directory. Grazie, per la risposta. Lo applicherò quando sarò di nuovo a casa.
mike

Ma hai bisogno di uno di questi per e in ogni area di lavoro
Mark

1
Sì, era nella premessa che ho dichiarato nella mia domanda :)
Mike

@Mark, come potrei andare con la directory dell'area di lavoro?
Nathan Basanese,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.