Pfad zur Binärdatei für einen bestimmten Benutzer überschreiben

8

Meine Frage scheint trivial zu sein, aber ich habe im Internet nichts Hilfreiches gefunden. Ich habe eine Binärdatei in

/urs/bin/binary

Es ist jedoch veraltet und eine neuere Version ist beispielsweise auf einigen Mount-Versionen verfügbar

/mount/new_version/binary

Und es gibt ein Bash-Skript, das diese Binärdatei in einer Form wie aufruft

binary -doSomething

Ich benötige dieses Skript, um eine neue Version der Binärdatei anstelle der alten aufzurufen, aber ich bin nicht berechtigt, dieses Skript zu ändern. Ist es eine Möglichkeit, den Pfad dorthin irgendwie zu überschreiben, aber nur für meinen Benutzer? Jede Hilfe wäre dankbar.

Viktor Stolbin
quelle
Wenn Sie dies nicht dürfen, wenden Sie sich an Ihren Administrator.
Sven

Antworten:

11

Wenn die Binärdatei aktiviert ist /usr/bin/binaryund das Skript die Binärdatei aufruft, ohne den vollständigen Pfad anzugeben, sondern sich darauf verlässt, /usr/bindass sie vorhanden PATHist, können Sie einfach die Position der neuen Binärdatei am Anfang des Benutzers hinzufügen PATH. Setzen Sie so etwas in ihre ~/.bashrc:

PATH=/mount/new_version:$PATH

Aus Sicherheitsgründen geben Skripte häufig den vollständigen Pfad zu Binärdateien an, um dies zu verhindern.

Bis auf weiteres angehalten.
quelle
3

Wenn Sie Zugriff auf die Binärdatei haben, können Sie diese sichern und eine symbolische Verknüpfung erstellen.

mv /urs/bin/binary /urs/bin/binary.bkp
ln -s /mount/new_version/binary /urs/bin/binary

[BEARBEITEN]

Entschuldigung, ich habe nicht gesehen, dass die Änderung nur für einen Benutzer durchgeführt werden muss.

Sie können anstelle der Binärdatei eine aufzurufende Funktion erstellen.

Abhängig davon, wie Sie die Binärdatei ausführen (vollständiger Pfad oder nur Name), müssen Sie eine geeignete Funktion erstellen , wie z.

# Full path
function /urs/bin/binary () { command /mount/new_version/binary "$@"; }
export -f /urs/bin/binary
# Name
function binary () { command /mount/new_version/binary "$@"; }
export -f binary

Wenn die Binärdatei keine Argumente akzeptiert / benötigt, entfernen Sie das "$ @" .

Um die Funktionserstellung zu automatisieren, fügen Sie die Funktionszeilen in die Profildatei im Benutzerverzeichnis ein.

Douglas P.
quelle
Dies betrifft alle Benutzer. Es ist nicht akzeptabel.
Viktor Stolbin
Entschuldigung, ich habe die Antwort korrigiert, da die Änderung nur einen Benutzer betreffen darf.
Douglas P.
3

alias commandname=/mount/new_version/binary

in der .bashrc über der Pfadanweisung / Export oder im Profil wird einfach genug zu erreichen.

art3mis
quelle