Wie führe ich ein beliebiges Skript mit einem Arbeitsverzeichnis des Verzeichnisses aus, in dem es sich befindet?

7

Ich muss eine groovige Skriptdatei von bash ausführen und das Skript muss ein Arbeitsverzeichnis des Verzeichnisses haben, in dem es existiert.

Das heißt, in meinem Bash-Skript mache ich das:

%Vor%

Aber das scheint das Arbeitsverzeichnis auf /etc/init.d zu setzen, das Verzeichnis, von dem ich anrufe. Wie ändere ich das Arbeitsverzeichnis für dieses Skript zu /opt/script ?

    
Stefan Kendall 09.09.2011, 15:25
quelle

4 Antworten

7
  

/etc/init.d

Wahrscheinlich rennst du das Skript von /etc/init.d ?

aus

Fügen Sie cd /opt/script in der ersten Zeile des Skripts hinzu

ODER

... um es dynamisch zu halten, fügen Sie hinzu: cd "$(dirname "%code%")"

    
The Bndr 09.09.2011, 15:29
quelle
15

Wenn Sie start-stop-daemon in Ihrem Skript /etc/init.d verwenden, können Sie den Parameter -d verwenden, um dies zu erreichen:

%Vor%     
David Santiago Turiño 04.10.2012 09:51
quelle
2

In bash funktioniert das am besten im Skript:

%Vor%

Dies wird auch mit dem folgenden Aufruf (von /path/to/script.sh ) erfolgreich sein:

%Vor%

wo HERE=$(dirname pwd -P) fehlschlagen würde.

Optional könnten Sie auch pwd anstatt nur $HERE verwenden, dann enthält man 3 realpath den reellpath (kanonisierten absoluten Pfadnamen) von %code% .

    
Johannes Weiß 09.09.2011 15:53
quelle
1

Etwas wie das vielleicht:

%Vor%     
Let_Me_Be 09.09.2011 15:29
quelle

Tags und Links