fragen stichworte

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

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

/urs/bin/binary

, aber es ist veraltet und neuere Versionen sind auf einigen Reitern verfügbar, z. B.

/mount/new_version/binary

Es gibt ein Bash-Skript, das diese Binärdatei in einer Form wie

aufruft
binary -doSomething

Ich brauche dieses Skript, um eine neue Version der Binärversion anstelle der alten aufzurufen, aber ich bin nicht berechtigt, dieses Skript zu ändern. Ist es ein Weg, den Pfad irgendwie zu überschreiben, aber nur für meinen Benutzer? Jede Hilfe wäre dankbar.

antworten

Wenn die Binärdatei in /usr/bin/binary ist und das Skript die Binärdatei aufruft, ohne den vollständigen Pfad anzugeben, sondern stattdessen davon ausgeht, dass /usr/bin in PATH ist, können Sie einfach die Position der neuen Binärdatei am Anfang von hinzufügen der Benutzer PATH. Setzen Sie so etwas in ihr ~/.bashrc:

PATH=/mount/new_version:$PATH

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

alias commandname=/mount/new_version/binary

in der .bashrc über der Pfadangabe/export oder im Profil wird das einfach genug erreichen.

Wenn Sie Zugriff auf die Binärdatei haben, können Sie sie sichern und einen symbolischen Link erstellen.

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

[EDIT]

Die Änderung muss nur für einen Benutzer vorgenommen werden.

Sie können eine Funktion erstellen, die anstelle der Binärdatei aufgerufen wird.

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

# 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, platzieren Sie die Funktionszeilen in der .profile-Datei im Benutzerverzeichnis.