Ich habe ein Verzeichnis, in dem ich ein Programm ausführe.
/usr/bin/my-dir
Ich muss das Programm aus dem Verzeichnis heraus ausführen. Dazu muss ich cd /usr/bin/my-dir ./my-program eingeben.
Ich habe ein Skript, das von einem Remotecomputer aus mein Programm wie folgt aktualisiert: rm -rf /usr/bin/my-dir mv my-program /usr/bin/my-dir
Das Problem tritt auf, wenn ich mich per SSH mit dem Computer verbunden habe und mich im Verzeichnis /usr/bin/my-dir befinde. Das Skript schlägt fehl, da es rm -rf /usr/bin/my-dir nicht erfolgreich ausführen kann (es löscht den gesamten Inhalt, aber nicht das Verzeichnis).
Gibt es eine Möglichkeit, dies zu umgehen (z. B. eine Möglichkeit, die Shell so zu konfigurieren, dass das Löschen des Verzeichnisses möglich ist, während ich mich darin befinde?) oder eine andere Lösung? Derzeit wechsle ich per cd aus dem Verzeichnis, führe das Skript aus und wechsle dann per cd zurück in das Verzeichnis, aber ich muss dies hunderte Male am Tag tun – es muss einen effizienteren Weg geben, dies zu tun.
Antwort1
Nur für den Fall, dass es jemandem hilft. Es stellt sich heraus, dass die Shell folgendermaßen funktioniert: Wenn ein aktuelles Verzeichnis in einer anderen Shell-Instanz gelöscht und dann neu erstellt und mit Dateien gefüllt wird, zeigt die ursprüngliche Shell ein leeres Verzeichnis an.
Um die Dateien erneut anzuzeigen, gehen Sie einfach
cd .
Dies führte zur Lösung des ursprünglichen Problems, indem nicht das Verzeichnis selbst gelöscht wurde (nur bestimmte Dateien gelöscht und ersetzt wurden).