2017-04-05 4 views
0

Wie der Titel sagt, habe ich ein Skript, das eine ausführbare Datei von einem wirklich langen Pfadnamen startet. Ich kann keine Änderungen am Skript vornehmen, da es nicht meins ist, aber ich muss es testen können. Ich mag im Grunde so etwas wie dies zu tun:Ich habe ein Skript, das eine ausführbare Datei mit einem langen Pfadnamen ausführt. Ich möchte diese ausführbare Datei stubben, damit ich das Skript testen kann

alias /some/really/long/path/name/for/this/executable/run.sh='/usr/bin/echo'

Doch dies wird nicht funktionieren mit den / in dem Aliasnamen.

Wie kann ich das Skript normal ausführen, aber "stummel" oder "mock" diese eine Zeile? Die Problemzeile ist in einer Funktion, so dass ich das Skript source ohne Probleme schreiben kann. Ich bin nur nicht sicher, was zu tun ist, sobald ich es aussortiert habe.

Irgendwelche Ideen?

Antwort

1

Sie könnten das Skript zuerst über sed ausführen, um run.sh mit dem zu ersetzen, was Sie wollen, und dann einfach die sed-Ausgabe als Test anstelle des Originals ausführen. Sollte ansonsten 100% identisch sein.

+0

Das ist genau das, was ich brauchte. Guter Ruf. – R4F6

0

Sie cannot export aliases to scripts. Wenn Sie Root-Rechten haben, könnten Sie eine Bindung stattdessen erstellen:

$ mkdir replacement 
$ ln -s /usr/bin/echo replacement/run.sh 
$ sudo mount --bind replacement /some/really/long/path/name/for/this/executable/ 

Die bind ein Verzeichnis mit einem anderen, ähnlich einem symbolischen Link ersetzen wird, aber das ursprüngliche Verzeichnis wird den Ersatz nach Aushängen mit

unverändert bleiben
$ sudo umount /some/really/long/path/name/for/this/executable/ 

Wie auch immer, warum kopieren Sie nicht beide Skripte in Ihr Home-Verzeichnis und modifizieren sie lokal?

Verwandte Themen