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?
Antworten:
Identifizieren Sie zunächst Ihre Shell, wie in einer anderen Antwort vermerkt, dies erfolgt einfach über die ps Befehl ...
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 ...
Für die Bourne-Shell ('sh') gilt im Allgemeinen Folgendes, wenn Sie sich anmelden
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.
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.
quelle
cat \etc\profile
/etc/passwd
Das letzte Feld von / etc / passwd teilt Ihnen Ihre Loggin-Shell mit.ps
Wenn Sie ps ausführen, werden Sie auch informiert (und die Ebene der Shell).quelle
source ~/.profile
,source ~/.bashrc
angerufen werden mitbash
odersh
?