Wie erstelle ich ein Skript, das ein anderes Skript im selben Ordner ausführbar macht?

Wie erstelle ich ein Skript, das ein anderes Skript im selben Ordner ausführbar macht?

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 bashSkript 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 pwdFolgendes weglassen:

chmod +x D3GO

Dies wird so interpretiert, als chmod +x /whatever/path/D3GOob 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_SOURCEVariable 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 dirnameBefehl 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

verwandte Informationen