459 Stimmen

Wie lassen sich andere Skripte am besten einbinden?

Normalerweise würde man ein Skript mit "source" einbinden

z. B:

main.sh:

#!/bin/bash

source incl.sh

echo "The main script"

incl.sh:

echo "The included script"

Die Ausgabe der Ausführung von "./main.sh" ist:

The included script
The main script

... Wenn Sie nun versuchen, das Shell-Skript von einem anderen Ort aus auszuführen, kann es das Include nicht finden, es sei denn, es befindet sich in Ihrem Pfad.

Wie kann man sicherstellen, dass das Skript das Include-Skript findet, insbesondere wenn das Skript beispielsweise portabel sein muss?

0voto

Alexander Yancharuk Punkte 12744

Nach man hier geeigneter Ort für Script-Includes ist /usr/local/lib/

/usr/local/lib

Dateien, die mit lokal installierten Programmen verbunden sind.

Ich persönlich bevorzuge /usr/local/lib/bash/includes für umfasst. Es gibt bash-helper lib für die Einbeziehung von libs auf diese Weise:

#!/bin/bash

. /usr/local/lib/bash/includes/bash-helpers.sh

include api-client || exit 1                   # include shared functions
include mysql-status/query-builder || exit 1   # include script functions

# include script functions with status message
include mysql-status/process-checker; status 'process-checker' $? || exit 1
include mysql-status/nonexists; status 'nonexists' $? || exit 1

bash-helpers includes status output

-5voto

Django Punkte 31

Sie können auch verwenden:

PWD=$(pwd)
source "$PWD/inc.sh"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X