Ich habe einige Alias-Befehle in meine .bashrc
Datei eingefügt, damit sie möglicherweise jedes Mal geladen werden, wenn ich ein neues Terminal-Fenster öffne. Das passiert aber nicht.
Ich muss run script:
im Terminal> Preferences> " MyDefaultTheme "> Shell Prefpane auswählen und hinzufügen:
source .bashrc && clear
damit es funktioniert ...
Dies scheint seltsam, da viele Tutorials nur sagen, dass Sie nur die .bashrc
Datei hinzufügen müssen und alles in Ordnung ist.
Beachten Sie, dass ich bash
bei der Verwendung des Terminals nicht einlaufe. Ich mag das andere (Standard) (ich weiß nicht, was es ist) besser, weil es mir zeigt, wo ich die ganze Zeit bin. Beispiel:
>>d54c6b47b:~ romeo$
anstatt:
>>bash$
In der Bash wird alles geladen, wie es sein sollte.
Meine Frage ist also, warum meine .bashrc
Datei nicht automatisch geladen wurde und ich jedes Mal die Option zum Aufrufen hinzufügen musste.
Auch ein Tutorial sagte mir, ich solle etwas machen wie:
$alias la=’ls -la’ >> ~/.bashrc
was den alias an meine schreiben sollte, das .bashrc
geht auch nicht ...
Beachten Sie, dass ich ein UNIX-Neuling bin, seien Sie also vorsichtig.
quelle
.bashrc
", aber das war es auch schon.csh
(oder einer anderen Variante) besser. Aber Sie sollten wissen, dass das>>bash$
geändert werden kann :).profile
in Ihrem AusgangsverzeichnisAntworten:
Fügen Sie das einfach in Ihre
.profile
Datei aus Ihrem Home-Verzeichnis ein und es sollte funktionieren, wenn Sie das nächste Mal eine neue Shell starten oder nachdem Sie sie ausgeführt habensource ~/.profile
Dieser Link gibt deutlich die Reihenfolge an, in der die Startdateien von der Shell gelesen und geladen werden: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup
quelle
~/.bashrc
. Die Lösung besteht jedoch nicht darin, Ihren.bashrc
Inhalt einfach in die Anmeldestartdatei einzufügen, da diese beiden Dateien unterschiedliche Setup-Typen ausführen sollen. Stattdessen ist die kanonische Setup für Bash Ihre haben~/.bash_profile
Quelle Ihres~/.bashrc
zu einem geeigneten Punkt im Skript (dauert in der Regel).Kenne ich schon. Was mir aufgefallen ist, dass OS X
.bashrc
beim Bash-Start keine Dateien liest . Stattdessen werden die folgenden Dateien gelesen (in der folgenden Reihenfolge):/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
Siehe auch Chris Johnsens informativen und nützlichen Kommentar:
Ich setze normalerweise nur die Dinge ein, die ich normalerweise getan
~/.bashrc
habe~/.profile
- hat bisher wie ein Zauber gewirkt.quelle
/usr/bin/login
, wodurch die Shell zu einer Anmeldeshell wird. Auf jeder Plattform (nicht nur Mac OS X) bash verwendet nicht.bashrc
für Login - Shells (nur/etc/profile
und die ersten.bash_profile
,.bash_login
,.profile
dass existiert und lesbar ist ). Dies ist der Grund, warum "Putsource ~/.bashrc
in Your.bash_profile
" eine Standardempfehlung ist.~/.bash_profile
,~/.profile
,~/.bash_login
, nie alle der ihnen. Sie können einen einfachen Test ausführen, indem Sie die 3 Dateien erstellen. Es sieht aus wie der Bash - Terminal die Präferenz hat~/.bash_profile
>~/.bash_login
>~/.profile
. Wenn einer von ihnen existiert, werden die weniger bevorzugten übersprungen. Deshalb ist es manchmal empfohlen, auch Quelle~/.profile
in~/.bash_profile
.Ich stecke alles in
~/.bashrc
und nursource ~/.bashrc
in .profile.Dadurch können Screen- und XTerm-Sitzungen (und ich vermute, TMUX-Sitzungen) meine Umgebung erben, da nur Nicht-Anmeldesitzungen ausgeführt werden
.bashrc
, während Anmeldesitzungen (z. B. Terminal oder iTerm) nur ausgeführt werden.profile
.quelle
.profile
für mehrere Shells gleich ist und nur POSIX-kompatiblen Shcode enthalten sollte. Wenn es Quellen.bashrc
enthält, enthält es möglicherweise Bash-spezifischen Code (die Existenz der.bashrc
Datei ist Bash-spezifisch). Ich empfehle Ihnen.profile
, Ihre in umzubenennen ,.bash_profile
da Sie sie auf Bash-spezifische Weise verwenden. Oder, um es generischen Code in.profile
und erstellen Sie ein ,.bash_profile
dass die Quellen.profile
und.bashrc
.Es gibt zwei Szenarien:
Für beide möchten Sie eine Quelle
~/.bashrc
in Ihrem Profil erstellen, die geladen oder bezogen wird, wenn Ihre Shell für Ihr Terminal gestartet wird.LINUX
Wird unter Linux
~/.profile
beim Start automatisch als Quelle in Ihre Shell eingefügt. Wenn Sie also zu Ihrem Terminal gehen und tippencd ~; ls -A
, sehen Sie alle Ihre Dateien und Verzeichnisse in Ihrem Home-Verzeichnis (/home/usrname/
). Sie sollten eine Datei mit dem Namen sehen.profile
. Dies ist die Datei, die beim Starten des Terminals automatisch "bezogen" wird.Wenn Sie Aliase und Funktionen hinzufügen möchten
~/.bashrc
(was ich auch mache), sollten Sie (innerhalb von)~/.profile
eine if-Anweisung hinzufügen, die prüft, ob~/.bashrc
es sich um eine nicht leere Datei handelt, und diese dann als Quelle verwenden.Um zu überprüfen, ob dies
~/.profile
bereits erfolgt, geben Sie Folgendes einnano ~/.profile
. Dies öffnet es in einem Texteditor (Sie können gedit verwenden, wenn Sie wissen, dass Sie es haben, oder sogar vim, wenn Sie wissen, wie man es benutzt). Möglicherweise erhalten Sie eine leere Textdatei (Sie sollten es nicht tun), aber wenn Sie dies tun, fahren Sie einfach fort. Wenn Sie an keiner Stelle eine Zeile mit der Aufschrift sehen ,source ~/.bashrc
geben Sie die folgenden Zeilen ein (platzieren Sie sie an einer angemessenen Stelle wie am Ende oder am Anfang und nicht in der Mitte einer if-Anweisung):Hiermit wird überprüft, ob
~/.bashrc
es sich um eine nicht leere Datei handelt (mit if[ -s ~/.bashrc ]
), und wenn dies der Fall ist, wird sie als Quelle verwendet. Ziemlich einfach. Jetzt können Sie einen beliebigen gültigen Alias, eine Funktion, eine Variable usw. hinzufügen~/.bashrc
.MAC OS X
Standardmäßig werden Max OS X-Quellen verwendet
~/.bash_profile
. Um Dinge hinzufügen zu können~/.bashrc
(was auch in OS X der Fall ist), gehen Sie wie unter Linux vor. Im Terminal eingebencd ~; nano .bash_profile
. Suchen Sie nach einer Zeile, die besagt,source ~/.bashrc
und fügen Sie die obige if-Anweisung (if [ -s ~/.bashrc ]; then source ~/.bashrc; fi
) hinzu, wenn sie nicht vorhanden ist .ANMERKUNGEN
Lassen Sie beim Schreiben einer if-Anweisung grundsätzlich ein Leerzeichen zwischen allem (
if [ -s ~/.bashrc]; then echo "found"; fi
dies funktioniert beispielsweise nicht, da kein Leerzeichen dazwischen steht~/.bashrc
und]
- der Interpreter denkt, dass dies ein Wort ist).Wenn Sie herausfinden möchten, wie Sie in einer if-Anweisung besser nach Dingen suchen können, gehen Sie zum Terminal und geben Sie Folgendes ein
man \[
. Dies gibt Ihnen im Wesentlichen die Möglichkeit, eine if-Anweisung herunterzufahren.if [ -f /path/to/file ]; then echo "it's a file"; else echo "not a file"; fi
Überprüft zum Beispiel, ob/path/to/file
es sich um eine Datei handelt und ob diese entsprechend auf stdout gedruckt wird. Ich beziehe mich immer auch darauf, um die Augen zu schonen und eine schnelle Referenz zu haben: 7.2. Dateitest-Operatoren .Ich hoffe das hilft. Ich erinnere mich, wie verwirrt ich war, als ich all dieses Zeug anfing (was nicht allzu lange her war); Also, viel Glück bei Ihren zukünftigen UNIX-Bemühungen!
quelle
.profile
bezogen ist nur , wenn Ihre Shell eine Login - Shell ist, sonst.bashrc
bezogen istSourcing .profile in .bash_profile hat es für mich getan
quelle
.bashrc
von Ihrem.bash_profile
und nicht von Ihrem zu beziehen.profile
..bash_profile
ist Bash-spezifisch und sollte die anderen beiden beziehen.Ich fand, dass nach der Installation von rvm (Auto-Installer, keine manuellen Änderungen) eine
~/.bash_login
Datei für sich selbst erstellt wurde, wo ich zuvor noch nie eine hatte.Dies bedeutet jedoch, dass meine
~/.profile
Setups und Aliase nicht mehr geladen wurden! Viele Verknüpfungen sind verschwunden. Ich dachte, sie liefen der Reihe nach, nicht ausschließlich: - /Ich fügte hinzu
bis
~/.bash_login
zu Kette Dinge wie erwartet ich.quelle
.profile
ist mehreren verschiedenen Shells gemeinsam und sollte nur POSIX-kompatiblen sh-Code enthalten..bash_profile
ist Bash-spezifisch und kann Bash-spezifischen Code enthalten. Wenn Sie Bash verwenden, sollten.bash_profile
Sie es im Allgemeinen vorziehen, es sei denn, Sie achten darauf, dass Ihr Startcode nichts enthält, was von Bash abhängt. Welches Programm auch immer erstellt wurde, hat dies.bash_login
wahrscheinlich getan, weil es Bash-spezifischen Code enthält, aber es sollte Quellcode enthalten,.profile
falls vorhanden.Putten...
... in
~/.bashrc
und dann Source~/.bashrc
in~/.bash_profile
funktionierte nicht für das Terminal-Programm, das installiert wird.Dann ging ich zum Dropdown-Menü Bearbeiten> Profileinstellungen , Registerkarte Titel und Befehl und wählte im Befehlsbereich dieser Seite Befehl als Anmeldeshell ausführen aus.
Danach zeigt das Starten eines neuen Terminals das gewünschte Ergebnis, wenn ich tippe
dh "rvm ist eine Funktion". Es tat nicht, bis ich diese Änderung vorgenommen, und es ist die einzige Änderung , die ich nach den gemacht
.bash_profile
und.bashrc
Änderungen in anderen Antworten hier beschrieben.quelle
Lassen Sie mich zunächst sagen, dass dies
~/.bashrc
die Datei ist, die jedes Mal ausgeführt wird, wenn eine zweite Shell aufgerufen wird (z. B. beim Ausführen eines Shell-Skripts) und~/.profile
bei jedem Login aufgerufen wird.Ich empfehle Ihnen daher, einen
. ~/.bashrc
Befehl in Ihre~/.profile
Datei zu schreiben. Dieser Befehl führt die bashrc-Datei jedes Mal aus, wenn Sie sich anmelden.quelle
Nach der Installation von rbenv auf meinem Remote-Server (Digital Ocean) Ubuntu 16.04 trat das gleiche Problem auf.
Es hat irgendwie geschafft
~/.bash_profile
.~/.bashrc
Auf einem OS X-System ist es dasselbe .Und Ubuntu fing an, nur zu lesen
~/.bash_profile
, aber nicht so,~/.bashrc
wie es sollte.Also habe ich meine Daten
~/.bash_profile
mit folgendem Befehl gesichert :Und benannte das Alte um
~/.bashrc
in~/.bash_profile
Es hat bei mir funktioniert. Nach meinem SSH Login habe ich alles geladen
~/.bashrc
.quelle
Für den Fall, dass dies jemand anderem helfen könnte ...
Stellen Sie sicher, dass Sie die richtige
.bashrc
Datei für den richtigen Benutzer bearbeiten . Ich hatte ein ähnliches Problem mit Vagrant. Nach dem Ausführen wurdevagrant ssh
meine.bashrc
Datei nicht ausgeführt. Die Lösung war einfach, da ich dachte, Vagrant würde sich mit dem Benutzer namens Vagrant anmelden und ich würde mich tatsächlich als ein anderer Benutzer anmelden. Also habe ich die falsche.bashrc
Datei bearbeitet . Nach der Bearbeitung der korrekten.bashrc
Datei wurden meine Aliase erkannt.quelle
Übrigens, wenn Sie ZSH aktiviert haben, ersetzt es Bash!
Alle diese
~/.bashrc
Dateien werden also nicht geladen.Sie müssen
~/.zshrc
stattdessen Ihre Aliase festlegen .quelle
Um den OSX-Anmeldestil beizubehalten
.profile
und das normale Bash-Verhalten zu unterstützen.bashrc
, können Sie eine.bashrc
Datei verwenden, wenn Sie zwischen regulärem nix und OSX wechseln, indem Sie einen symbolischen Link zu Ihrer.bashrc
Datei mit dem Namen bereitstellen.bash_profile
. Stellen Sie einfach sicher, dass diese Datei noch nicht existiert, bevor Sie dies versuchen, aber so mache ich es.quelle
.bash_profile
) und eine Initialisierung auf jeder Shell-Ebene (.bashrc
)./ etc / bashrc ist für globale Profile auf Mac-Systemen. Sie können Folgendes hinzufügen: alias ls = "ls -G" am Anfang dieser Datei, und zu Ihrer Zufriedenheit werden alle Dateien und Ordner auf dem System koloriert, sodass Sie für jeden einzelnen Benutzer keine zusätzlichen Einstellungen vornehmen müssen. Sie werden auch feststellen, dass Sie zusammen mit "sudo su -", um von sich aus zu rooten, immer noch farbige Dateien und Ordner ohne zusätzliche Kopfschmerzen haben.
Ein weiterer lustiger Tipp: Wenn Sie Iterm2 von Mac verwenden, werden beim Importieren von Farbprofilen die Farben der Dateien und Ordner sofort entsprechend Ihrem Farbschema gerendert, nachdem diese Option auf "/ etc / bashrc" gesetzt wurde.
quelle