Der Code in .bashrc wird nicht ausgeführt, wenn ich in Ubuntu 12.04 ein neues Terminalfenster öffne. Das ist mir beim Erstellen einer .bash_aliases-Datei aufgefallen. Die Aliase wurden nicht angezeigt, als ich ein neues Terminal öffnete. Jedoch, wenn ich tippe, sind source .bashrc
die Aliase aufgetaucht.
.bashrc sollte jedes Mal ausgeführt werden, wenn ich ein neues Terminalfenster öffne, oder?
Wie mache ich das?
.profile
wird beim Anmelden gelesen, nicht beim Öffnen eines neuen Terminals, es sei denn, irgendwo liegt eine Fehlkonfiguration vor. Selah: hast du etwas an der Standardkonfiguration geändert? Führen Sie bitteps -o command $$ $PPID
ein Terminal aus und kopieren Sie die Ausgabe..bashrc
in Ihrem Home-Ordner befinden, oder?echo $SHELL
. Dies ist mir passiert und die Shell war / bin / sh statt bash. Repariere es in / etc / passwd und starte .bashrc.Antworten:
Es muss nicht unbedingt laufen. An der Spitze der standard .bashrc steht dieser Kommentar:
Ich glaube, es gibt eine Option, um das Bash-Terminal als Login-Shell auszuführen oder nicht. Unter Ubuntu wird gnome-terminal normalerweise nicht als Anmeldeshell ausgeführt, daher sollte .bashrc direkt ausgeführt werden.
Bei Anmelde-Shells (wie den virtuellen Terminals) wird die Datei normalerweise
~/.profile
ausgeführt, es sei denn, Sie haben eines~/.bash_profile
oder~/.bash_login
, diese sind jedoch standardmäßig nicht vorhanden. Standardmäßig verwendet Ubuntu nur .profile.Der Standard
~/.profile
enthält Folgendes:Dies führt .bashrc aus, wenn es verfügbar ist - vorausgesetzt, $ BASH_VERSION ist in Ihrer Umgebung vorhanden. Sie können dies überprüfen, indem Sie den Befehl
echo $BASH_VERSION
eingeben. Er sollte einige Informationen zur Versionsnummer enthalten und nicht leer sein.quelle
~/.bash_profile
oder erstellt haben~/.bash_login
. Sie können testen, indem Sie das Kontrollkästchen aktivieren oder deaktivierenEdit -> Profile Preferences -> Title and Command -> "Run command as a login shell
und das Terminal beenden und dann erneut ausführen. Du könntest etwas von .profile nachmachen, um es zu testen.~/.bash_profile
oder~/.bash_login
auf Ihrem System erstellt haben und diese behalten möchten, aber dennoch ausführen möchten~/.profile
und von dort~/.bashrc
ausgeführt werden, können Sie sie von Ihrem eigenen~/.bash_profile
oder~/.bash_login
mit einer Zeile, die enthält, beziehensource "$HOME/.profile"
. Gibt Ihnen die farbige Ausgabe von ls auch in Login-Shells zurück!In meinem Fall
.bashrc
fehlten einfach die Ladezeilen.bash_profile
Ich habe es manuell hinzugefügt und es hat mit meinem neuen Login funktioniert
quelle
.bash_profile
? Ubuntu verwendet.profile
standardmäßig ein, nicht.bash_profile
.pcre
und es scheint, als ob es das Bash-Profil überschrieb, anstatt es hinzuzufügen..bash_profile
Enthält die Konfiguration für die Bash-Shell. Wenn Sie ein Terminal öffnen, liest es zuerst Befehle und führt sie aus~/.bash_profile
. Sie können also Folgendes hinzufügen,.bash_profile
um die Shell gemäß bashrc einzurichten.quelle
~/.bash_profile
nicht der Fall ist ), wird diese nicht gelesen (und in Ubuntu standardmäßig nicht vorhanden)Wenn dies
$BASH_VERSION
nicht festgelegt ist, verwenden Sie denchsh
Befehl, um Ihre Shell auf festzulegen/bin/bash
.Ich hatte ein ähnliches Problem mit 12.04 LTS und es stellte sich heraus, dass für das neue Benutzerkonto die Standard-Shell eingestellt war
/bin/sh
, was die Ursache des Problems war.quelle
Entspricht dem Kommentar in .profile
Also los, wenn
~/.bash_profile
oder~/.bash_login exists
, werden diese ausgeführt anstatt~/.profile
wenn Sie ausführen möchten ,
~/.bashrc
fügen Sie einfach die Zeilesource ~/.bashrc
inbash_profile
quelle
.bashrc
wurde bezogen, bis ich eine.bash_profile
Datei erstellt habe. Also habe ichsource ~/.bashrc
meiner.bash_profile
Datei eine Zeile vorangestellt .Anstatt das alles
Edit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell"
durchzugehen, schreibenbash
und schließen Sie es einfach in das benutzerdefinierte Befehlsfeld . Wenn Sie das Terminal das nächste Mal öffnen, wird es auch automatisch ausgeführt.quelle