Wie kann ich feststellen, welche Startdateien ich für sh oder bash habe?

1

Von diese frage ich verstehe das je nach betriebssystem sh und bash anders verhalten.

Tun env und alias Das kann ich sagen:

Jedes Mal, wenn ich ein OSX-Terminal öffne oder starte bash Die Variable $SHELL=/bin/bash läuft source ~/.profile welche ruft source ~/.bashrc. Wenn ich renne $sh die Befehle source ~/.profile Noch source ~/.bashrc werden nicht aufgerufen, daher ist keiner der Aliase definiert.

Jetzt auf einem Linux- oder UNIX-Server mit bash oder sh:

Wie kann ich feststellen, welche Skripte bei der Anmeldung ausgeführt werden?

ilciavo
quelle

Antworten:

2

Identifizieren Sie zunächst Ihre Shell, wie in einer anderen Antwort vermerkt, dies erfolgt einfach über die ps Befehl ...

$ ps
  PID TTY          TIME CMD
 3360 pts/2    00:00:00 bash
 3702 pts/2    00:00:00 ps

Um sicherzustellen, welche Dateien gelesen werden, müssen Sie das System untersuchen, bei dem Sie sich anmelden. 'bash' shell hat viele 'wenn dies' dann 'mach das' sonst 'mach etwas anderes' optionen. Um eine vollständige Beschreibung der zu beschaffenden Dateien zu erhalten, siehe Hier , aber normalerweise ist die Liste ...

  • / etc / profile
  • $ HOME / .bash_profile
  • $ HOME / .bashrc (falls dies im .bash_profile konfiguriert ist)
  • $ HOME / .bash_logout (beim Abmelden, nicht beim Anmelden)

Für die Bourne-Shell ('sh') gilt im Allgemeinen Folgendes, wenn Sie sich anmelden

  • / etc / profile
  • $ HOME / .profile

Was ich gerne auf Systemen mache, die ich nicht kenne, ist eine Zeile in Startdateien, die ich lesen möchte, um zu prüfen, ob die Standardausgabe an ein Terminal angeschlossen ist und ob der Dateiname angezeigt wird. In diesem Beispiel verwende ich es in der .bash_profile-Datei.

[ -t 1 ] && echo "reading .bash_profile"

Dies funktioniert entweder für bash oder sh (und einige andere Derivate auch). Dies ist hilfreich, da ich weiß, was wann gelesen wird und wenn ich Fehler erhalte, weiß ich, aus welcher Datei sie stammen (Fehler vor der ersten Echo-Meldung sind wahrscheinlich auf den Anmeldevorgang selbst oder auf das systemweite Verzeichnis / etc / profile zurückzuführen.

Vergessen Sie auch nicht, dass Sie jederzeit Ihre eigenen Startdateien erstellen und diese selbst einbinden können, indem Sie sie in eine Datei einbinden, die bereits bezogen wird.

MoopyGlue
quelle
Danke für die ausführliche Antwort und die Empfehlung. Ich sehe, dass OSX im Vergleich zu Linux sehr unterschiedlich ist. Lektion des Tages: cat \etc\profile
ilciavo
1
  1. /etc/passwd Das letzte Feld von / etc / passwd teilt Ihnen Ihre Loggin-Shell mit.
  2. ps Wenn Sie ps ausführen, werden Sie auch informiert (und die Ebene der Shell).

      PID TTY          TIME CMD
     5802 pts/0    00:00:00 bash
     6292 pts/0    00:00:00 ps
    
Archemar
quelle
danke, wo sind source ~/.profile, source ~/.bashrc angerufen werden mit bash oder sh?
ilciavo