Der folgende Fehler tritt immer dann auf, wenn nach dem Anmelden und Erstellen eines neuen Bildschirms unter Linux:
Bad : modifier in $ (/).
Kürzlich habe ich einige Pfade hinzugefügt und ich weiß nicht, ob es damit zusammenhängt.
Für die Pfade erinnere ich mich, dass ich $PATH
und .bashrc
.
Wie kann ich das korrigieren, damit es nicht wieder angezeigt wird?
Vielen Dank!
Kommentare
- Wir ' wissen nicht, ob es ist entweder verwandt. Könnten Sie bitte hinzufügen, was Sie an der Frage geändert haben?
- „Sie haben einige Pfade hinzugefügt“ bedeutet, dass Sie
$PATH
Inhalte hinzugefügt haben? Haben Sie Ihre.bashrc
geändert? Können Sie Ihre.profile
und.bashrc
veröffentlichen? - Siehe stackoverflow.com/questions/8805839/bad-modifier-in
- Wilde Vermutung: Sie haben einen Pfad mit
$
und der Shell hinzugefügt interpretiert$
als Sonderzeichen. - Ich erinnere mich, dass ich $ PATH und .bashrc Dinge hinzugefügt habe. Wie kann ich mein .profile und .bashrc anzeigen? Mark, ich habe diesen Beitrag angesehen und versucht, Folgendes zu tun: setenv PATH $ {PATH}: /, aber ' hat nicht funktioniert.
Antwort
Sie verwenden bash
nicht als Shell, sondern (t)csh
:
> csh % PATH="${PATH:/blah}" Bad : modifier in $ (/).
Wenn Sie stattdessen bash
verwenden möchten, können Sie wahrscheinlich chsh
oder bitten Sie Ihren Systemadministrator, dies für Sie zu ändern.
In bash
, wenn Sie die :
und platzieren Sie es in geschweiften Klammern. {
}
Dies würde bedeuten, dass ein Modifikator ist auf die Variable anzuwenden. In csh
werden die geschweiften Klammern nicht benötigt, um einen Modifikator anzuwenden, und Sie müssten tatsächlich geschweifte Klammern hinzufügen, wenn Sie dies nicht tun möchte, dass die :
signalisiert, dass ein Modifikator ihm folgt.
Kommentare
- Ist dies eine Vermutung oder eine Tatsache? ' ist schwer zu sagen.
- @Wildcard
bash
hat sehr unterschiedliche Fehlermeldungen. es würde sagen: ' Syntaxfehler: Operand erwartet (Fehlertoken ist " / blah ") '. Ich habe meine Antwort noch etwas präzisiert.
Antwort
Sie müssen entkommen „:“. Ihre cshrc-Datei sollte also wie folgt aussehen:
setenv PATH $PATH\:/path/to/add
Danach können Sie
source ~/.cshrc
, um Änderungen am aktuellen Terminal vorzunehmen. Es wird automatisch angewendet, wenn Sie das nächste Mal ein neues Terminal öffnen.
Kommentare
- Eine korrektere Syntax in (t) csh wäre
setenv PATH ${PATH:q}:/path/to/add
. Oder besserset path = ($path:q /path/to/add)
oder noch besser intcsh
:set -f path = ($path:q /path/to/add)
, um die Elemente eindeutig zu halten.