Betrachten Sie dieses Skript, das ich geschrieben habe und das in das übergeordnete Verzeichnis gehen soll, wenn kein Argument angegeben wird (der if ... Teil).
#/bin/bash
if (($# == 0))
then
cd ..
else
for basename
do
cd ${PWD%$basename*}$basename
done
fi
Das Problem ist, dass wenn ich es wie folgt ausführe
./up.sh
wird die cd in einer Subshell ausgeführt, wodurch sie nutzlos wird.
Wenn ich das Skript mit source
Es funktioniert, aber ich möchte es nicht auf diese Weise aufrufen (es macht den Aufruf des Skripts zu kompliziert, außerdem würde man erwarten, dass es direkt aufgerufen wird, wenn es im PATH gefunden wird).