Keine bashrc-Datei in meinem Home-Verzeichnis

14

Folgendes habe ich aus meinem Vortrag notiert:

  • Suchen Sie die Datei .bashrcin Ihrem Home-Verzeichnis
  • machen vi .bashrc
  • Wenn Sie einen Anwendungsordner irgendwo ablegen, stellen Sie sicher, dass sich seine Adresse in der Pfadvariablen befindet.

Das Problem ist, dass ich keine .bashrcDatei in meinem Home-Verzeichnis habe. Es gibt nur eine .bash_historyDatei in meinem Haus.

Wenn ich zum Stammverzeichnis gehe, gibt es dort eine etc/bash.bashrcDatei, aber ich denke, dass sie Änderungen für alle Benutzer und nicht nur für mich vornehmen wird. Ich möchte diesen Weg nur für mich selbst hinzufügen. Es sollte andere nicht beeinflussen. Außerdem enthält $PATHdiese bashrc-Datei keine Variable, sodass ich noch verwirrter bin.

Detraveller
quelle

Antworten:

20

Vergessen Sie nicht, dass es sich um eine versteckte Datei in Ihrem Home-Verzeichnis handelt (Sie wären nicht der Erste, der eine Datei erstellt ls -lund denkt, dass sie nicht vorhanden ist).

Folgen Sie ...

ls -la ~/ | more

Auf .bashrcder ersten Seite sollte sich ein befinden . Wenn nicht, erstellen Sie es einfach mit

vi ~/.bashrc

Und schreiben Sie einfach die folgende Zeile hinein.

PATH=$PATH:~/bin

ODER Die meisten Distributionen behalten eine Standarddatei .bashrcbei. /etc/skel/Sie können sie in das Ausgangsverzeichnis kopieren.

$cp /etc/skel/.bashrc ~
MangeshBiradar
quelle
OK, das verstehe ich jetzt. Auf anderen Computern kann ich lego eingeben und die Software startet. Auf meinem System befindet sich der Lego-Ordner in meinem ~/data/user1/binOrdner. Ich habe diesen Pfad zur .bashrc-Datei hinzugefügt. Was muss ich nun tun, damit beim Eingeben von Lego die Software gestartet wird? Muss ich einen Alias ​​einrichten? Wenn ja, wie? alias lego='<What do i put here???>'
@detraveller Haben Sie ~/data/user1/binIhrer Umgebungsvariablen PATH in der .bashrcDatei hinzugefügt ? (Fügen Sie diese Zeile hinzu :) export PATH=$PATH:~/data/user1/bin- Wenn ja, sollten Sie nur legodas Terminal eingeben können und das Programm sollte starten.
AcId
Ich habe nur hinzugefügt PATH=$PATH:~/data/user1/bin. Sie haben den Export nicht erwähnt, also habe ich ihn nicht dort abgelegt. Ich werde es morgen noch einmal versuchen, wenn ich zur Uni gehe.
Detraveller
Aber ich habe mich gefragt, wie ich bash sage, dass dies legodas Wort ist, mit dem die Software gestartet wird.
Detraveller
11

Die meisten Distributionen enthalten eine Standarddatei .bashrc, die /etc/skel/Sie einfach in Ihr Home-Verzeichnis kopieren können. Andernfalls können Sie einfach eine neue leere .bashrcDatei in Ihrem Home-Verzeichnis erstellen.

Acid
quelle
4

Erstellen Sie Ihre eigene Startdatei für interaktive Shells

Informationen zu Bash-Startdateien

Aus dem Abschnitt INVOCATION von man 1 bashsagt:

Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest bash Befehle aus /etc/bash.bashrc und ~ / .bashrc und führt sie aus, sofern diese Dateien vorhanden sind.

Beachten Sie, dass diese Startdateien optional sind . Bash benötigt sie nicht. Bash unterscheidet auch zwischen Login-Shells und interaktiven Shells. Eine interaktive Shell ist wie folgt definiert:

Eine interaktive Shell wird ohne Argumente ohne Option und ohne die Option -c gestartet, deren Standardeingabe und Fehler beide mit Terminals verbunden sind (wie durch isatty (3) bestimmt), oder mit der Option -i gestartet.

Viele Distributionen beziehen einen Startdateityp vom anderen, andere jedoch nicht. Daher kann es schwierig sein, dieses Problem kanonisch zu beheben. Sie müssen alle Ihre Startdateien untersuchen, um festzustellen, wie und wann Sie ~/.bashrcauf Ihrem System aufgerufen werden.

Erstellen Ihrer interaktiven Shell-Startdatei pro Benutzer

Wenn Sie einfach eine benutzerspezifische ~/.bashrcDatei vermissen , erstellen Sie einfach eine. Dies wird von Bash für Nicht-Login-Shells (z. B. Shells, die ohne --loginFlag gestartet wurden ) oder immer dann aufgerufen , wenn Sie die Shell zur Interaktion zwingen, indem Sie sie mit dem -iFlag aufrufen .

CodeGnome
quelle
0

Wenn Sie keine haben .bashrc, können Sie einfach eine erstellen und die gewünschten Zeilen hinzufügen, z. B.:

PATH=$PATH:~/bin

um Ihr Benutzer-Bin-Verzeichnis am Ende des Pfads hinzuzufügen.

Sie sollten jedoch vorsichtig sein, wenn andere Startdateien vorhanden sind . Die Regeln für die Verwendung von Dateien sind recht komplex, werden jedoch in der bashManpage beschrieben. Geben Sie man bashin eine Befehlszeile ein und suchen Sie nach INVOCATION.


quelle
0

Kurze Antworten:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

Detaillierte:
Ich nehme eine genauere wörtliche Interpretation.

  1. "Datei .bashrc in Ihrem Home-Verzeichnis suchen"
    Da der Befehl vorhanden istfind, schlägt der tückische Editor möglicherweisevor, ihn zu verwenden:

    find ~ -maxdepth 1 -name '.bashrc'

    Suchen Sie im Home-Verzeichnis ~und steigen Sie nur von einer Ebene ab (kein Unterverzeichnis -maxdepth 1). Für alle Optionen schreiben man find.
    Die Zeile unter dem erledigt den minimalen Job

    ls ~/.bashrc   

    Hinweis: Falls ~/.bashrcnicht vorhanden , können Sie es mit einem einfachen erstellenecho >> ~/.bashrc .

    Das >>erstellt die Datei, wenn sie nicht vorhanden ist. Wenn das ~/.bashrcstattdessen vorhanden ist, wird nur die harmlose Ausgabe von leer angehängt echo, wodurch ein unbeabsichtigtes Löschen einer solchen kritischen Datei vermieden wird, die ohne Sicherung nur schwer wiederherzustellen ist.

    (Das Folgende ist, weil ich selten die Bedeutung meines Spitznamens beachten muss, nicht ausführen, wenn Sie Zweifel haben).

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
  2. "Do vi .bashrc"
    Jetzt können Sie tunvi ~/.bashrc, die Falle hier ist, dass Sie drücken:undqverlassen müssen!

  3. Anwendungsordner und$PATH
    Wenn Sie einen Anwendungsordner erstellen, z. B.~/MyNewCoolProgramFolderwird in der folgenden Zeile nur überprüft, ob er sich in der$PATHfolgendenDatei befindet:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    Sie müssen nicht hinzufügen, wenn bereits vorhanden ist. Bei Bedarf können Sie die $PATHmit hinzufügen

    PATH=$PATH:~/MyNewCoolProgramFolder

    und um diese Zeile hinzuzufügen, ~/.bashrcwenn Sie sie dauerhaft machen möchten.

  4. "4?!? Wie 4, wenn es nur 3 Punkte gäbe?" - Problemumgehungen.
    Für letztere gibt es einige Problemumgehungen. Angenommen, eine ausführbare Datei mit dem NamenCoolDetravellerexistiert nur in Ihrem neuen Anwendungsordner:

    (a) Sie können versuchen, es auszuführen. Einfach wird es nicht starten, wenn es nicht in der ist $PATH.

    CoolDetraveller: Befehl nicht gefunden

    (b) Sie können die automatische Vervollständigung versuchen . Beginnen Sie zu schreiben CoolDetravelleund drücken Sie Tab. Wenn es in der ist $PATH, wird es automatisch vervollständigt (immer wenn die automatische Vervollständigung aktiviert ist).

    (c) Sie können fragen, whichob der Befehl bash shell verwendet wird, wenn Sie den Befehl schreiben CoolDetraveller.

        which CoolDetraveller

    Hinweis: Wenn in Ihrem Anwendungspfad ein oder mehr Leerzeichen enthalten sind, whichkonnte feststellen , nicht in der Lage zu CoolDetraveller, obwohl (hier ehre ich meinen Spitznamen wieder) , um die automatische Vervollständigung des CoolDetravellerals gültige Parameter des whichBefehls funktioniert!

    Ad nauseam : Sie können nicht fragen,whereis CoolDetravellerweilwhereis

    hat einen fest codierten Pfad und findet daher möglicherweise nicht immer das, wonach Sie suchen

Hastur
quelle