Wie kann die Vervollständigung der Bash-Registerkarte mit dem schreibgeschützten Dateisystem ausgeführt werden?

7

Ich habe das Dateisystem meines RaspberryPi (Raspbian - Jessie) absichtlich so konfiguriert, dass es schreibgeschützt ist. Eines der Dinge, die (noch) nicht funktionieren, ist die Tab-Vervollständigung (auch bekannt als Auto-Vervollständigung) in Bash, wo ich häufig den folgenden Fehler erhalte:

Bash: Temporäre Datei für Here-Document: Schreibgeschütztes Dateisystem kann nicht erstellt werden

Viele Online-Diskussionen konzentrieren sich darauf, wie Dateisystemprobleme behoben werden können, die sich mit diesem Fehler manifestieren. Ich möchte stattdessen Bash anpassen. Wo wird versucht, diese temporäre Datei zu erstellen, und wie kann ich sie umleiten, um diese Datei in / tmp (die mit tmpfs bereitgestellt wird) zu erstellen?

gleichnamig
quelle
2
Sie können versuchen, Ihre Bash mit zu starten, strace -e open,creat bashund es werden Ihnen alle Systemaufrufe von open () und creat () angezeigt.
Meuh
2
Könnte sein /var/tmp?
Celada
2
Bash erstellt seine temporären Dateien normalerweise in $TMPDIR, standardmäßig, /tmpwenn nicht festgelegt, wie bei den meisten Programmen. Ist TMPDIReingestellt? Wenn ja, stellen Sie sicher, dass sich der Speicherort auch auf tmpfs befindet. Andernfalls wird viel mehr als nur die Bash-Fertigstellung unterbrochen. Wenn das nicht der straceFall ist , schauen Sie unter, wie meuh rät.
Gilles 'SO - hör auf böse zu sein'

Antworten:

1

Der erste Test, den Sie durchführen können, um festzustellen, wo sich Ihr tmp-Ordner befindet und ob er funktioniert, führt diesen Befehl aus:

tempfile

Die Ausgabe sollte ungefähr so ​​aussehen:

/tmp/fileupz962

Wenn der Ordner / tmp vorhanden ist und funktioniert (über Schreibberechtigungen verfügt), der temporäre Ordner jedoch auf ein anderes Verzeichnis wie / var / tmp verweist, können Sie versuchen, den temporären Ordner so einzustellen, dass er auf / tmp verweist, indem Sie:

export TMPDIR=/tmp

Wenn bash die temporäre Datei in / tmp speichert und der Ordner / tmp aus irgendeinem Grund nicht funktioniert, können Sie versuchen, die Bereitstellung aufzuheben (falls sie bereitgestellt ist). Es kann vorkommen, dass / tmp schreibgeschützt bereitgestellt wird. In beiden Fällen sollte es nützlich sein, Folgendes zu versuchen:

sudo umount /tmp

Dann können Sie versuchen, RAM-Speicher für das Verzeichnis / tmp zu verwenden:

sudo mount -t tmpfs -o size=128M tmpfs /tmp/ram/

Sie können die RAM-Größe (-o Größe = 128 MB) auf einen beliebigen Wert einstellen.

Hongo
quelle