Gibt es eine Möglichkeit für ein sourced Shell-Skript, um den Pfad zu sich selbst herauszufinden? Ich beschäftige mich hauptsächlich mit bash, obwohl ich einige Kollegen habe, die tcsh verwenden.
Ich vermute, dass ich hier nicht viel Glück habe, da Sourcing dazu führt, dass Befehle in der aktuellen Shell ausgeführt werden, also $0
ist immer noch der Aufruf der aktuellen Shell, nicht das Quellskript. Mein bester Gedanke ist derzeit, source $script $script
zu tun , sodass der erste Positionsparameter die notwendigen Informationen enthält. Hat jemand einen besseren Weg?
Um es klar zu sagen, ich beziehe Sourcing das Skript, ohne es auszuführen:
source foo.bash
Akzeptierte Antwort:
In tcsh
, $_
am Anfang des Skripts enthält den Ort, an dem die Datei bezogen wurde, und $0
enthält es, wenn es ausgeführt wurde.
#!/bin/tcsh
set sourced=($_)
if ("$sourced" != "") then
echo "sourced $sourced[2]"
endif
if ("$0" != "tcsh") then
echo "run $0"
endif
In Bash:
#!/bin/bash
[[ $0 != $BASH_SOURCE ]] && echo "Script is being sourced" || echo "Script is being run"