Wie erstelle ich ein Skript, das ein anderes Skript im selben Ordner ausführbar macht? Ich möchte mir keine Gedanken über den Pfad machen, da es sich im selben Verzeichnis befindet. Es sollte also ungefähr so aussehen (ich versuche, ein D3GO-Skript ausführbar zu machen):
#!/bin/bash
chmod +x "$pwd"/D3GO
Ich habe noch keine Erfahrung mit Skripten, also bitte nicht lachen :D Danke!
Antwort1
Wenn Sie ein bash
Skript ausführen, werden alle seine Befehle in dem Verzeichnis ausgeführt, aus dem das Skript aufgerufen wird, einschließlich pwd
. Beispiel:
#!/bin/bash
pwd
Wenn Sie dies von ausführen /whatever/path
, wird angezeigt /whatever/path
, unabhängig davon, wo das Skript platziert ist.
Wenn Sie Dateien in dem Verzeichnis bearbeiten möchten, aus dem Sie das Skript ausführen, können Sie pwd
Folgendes weglassen:
chmod +x D3GO
Dies wird so interpretiert, als chmod +x /whatever/path/D3GO
ob Sie es von ausführen /whatever/path
, unabhängig davon, wo das Skript tatsächlich platziert ist.
Um in dem Verzeichnis zu arbeiten, in dem sich das Skript befindet, können Sie die $BASH_SOURCE
Variable verwenden. Es handelt sich um ein Array, dessen erstes Element der Pfad zum Skript selbst ist (also /script/directory/myscript.sh
). Sie können dies mit dem dirname
Befehl kombinieren, um nur das Verzeichnis abzurufen:
chmod +x `dirname ${BASH_SOURCE[0]}`/D3GO
Dabei wird in dem Verzeichnis gesucht D3GO
, in dem sich dieses Skript befindet, und nicht dort, von wo aus es aufgerufen wird. (Danke an @muru, der mich auf meinen Fehler aufmerksam gemacht hat.)
Antwort2
Ihr wart ganz nah dran!
#!/bin/bash
chmod +x D3GO