Ich habe zwei Verzeichnisse:src
und projects
. Ich möchte mich selbst daran hindern, git ...
auszuführen es sei denn, ich befinde mich ausdrücklich innerhalb von src
oder projects
. Ist das möglich?
Akzeptierte Antwort:
Es ist schwierig zu verhindern, dass die Binärdatei ausgeführt wird, aber für die typischen Situationen gibt es eine einfache Schutzmethode:
- Sie definieren eine Shell-Funktion, die den Namen überschreibt. Dies funktioniert offensichtlich nicht in einer anderen (auch der eines anderen Benutzers) Shell.
- Sie nehmen die Binärdatei aus dem $PATH und ersetzen sie durch ein Wrapper-Skript. Dies ist sicherer, führt aber offensichtlich zu Problemen bei Software-Updates (das Skript wird überschrieben).
Die Shell-Funktion könnte so aussehen:
git () {
local cwd="$(pwd -P)"
if ! [ "/path/to/src" = "$cwd" -o "/path/to/projects" = "$cwd" ]; then
echo "The current working directory is: '${cwd}'"
echo "git must not be run from here; from src and projects only."
echo "Aborting."
else
command git "[email protected]"
fi
}