So erstellen Sie ~ / .bash_profile und ~ / .profile

25

Also, ich habe nicht .bash_profileweder .profilein meinem Home - Ordner. Wie erstelle ich sie? Was soll ich danach tun, wenn ich das Terminal öffne und diese Dateien gelesen werden?

Thi G.
quelle

Antworten:

28

Sie können den touchBefehl verwenden.

Zum Beispiel,

cd ~

um zum Home-Verzeichnis zu gelangen.

Jetzt erstellen wir eine Datei mit dem Namen .bash_profile(der Punkt bedeutet, dass sie ausgeblendet wird).

Dann benutze nanooder viim Terminal. Wenn Sie nicht wissen, was viist, verwenden Sie einfach nano. Zum Öffnen dieser Dateien verwenden Sie:

sudo nano .bash_profile

sudostellt sicher, dass Sie diese Dateien speichern können. Hier können Sie hinzufügen aliases. nanooder erstellt viautomatisch eine neue Datei, wenn diese in Ihrem aktuellen Verzeichnis in Terminal nicht vorhanden ist.

Nachdem Sie fertig sind, drücken Sie Ctrl+ O, Enterund Ctrl+ Xzu speichern und zu beenden. Schließlich verwenden

source ~/.bash_profile

Um das Terminal neu zu laden, wird gelesen, was Sie in diesen Dateien abgelegt haben.

Natürlich können Sie das auch aliasen, wenn Sie möchten. :)

Um Ihre letzte Frage zu beantworten, werden diese Dateien bei jedem Öffnen des Terminals automatisch gelesen. Wenn jedoch ein Fehler auftritt (z. B. keine Leerzeichen zwischen Aliasnamen einfügen), werden Sie darauf hingewiesen.

Mehr Informationen

Wie George betonte, .bash_profileläuft das nur auf Login-Shells. Für nicht angemeldete Shells müssten Sie eine .bashrcDatei erstellen mit:

    sudo nano .bashrc

Links

.bash_profile vs .bashrc

Bedeutung von .bashrc

sameetandpotatoes
quelle
5
Warum toucherstellen Sie zuerst leere Dateien? nanomacht das sowieso automatisch.
Nohillside
5
Außerdem möchten Sie wahrscheinlich nicht sowohl ~ / .profile als auch ~ / .bash_profile - wenn bash .bash_profile sieht, kümmert es sich nicht um .profile. Schließlich wird es nur für "Login" -Shells ausgeführt. Nicht-Login-Shells führen stattdessen ~ / .bashrc aus. Siehe vorherige SO-Fragen hier und hier .
Gordon Davisson
@ GordonDavisson ist es gut, ~/.profileals Kopie zu haben ~/.bash_profile? Und wenn Sie beides haben, was haben Sie dann drin, was Sie ~/.profilenicht tun können ~/.bash_profile?
Thi G.
2
@ThiG: Ich hätte nicht eine Kopie der anderen; Sie werden wahrscheinlich etwas hinzufügen, vergessen, es dem anderen hinzuzufügen, und verwirrt sein. Lesen Sie meine Empfehlungen zu dieser SO-Frage, um zu erfahren, was ich als Best Practice bezeichnen würde.
Gordon Davisson
sudostellt sicher, dass Sie die Benutzerrechte durcheinander bringen. Tu das nicht.
Max Ried
2

Sie können die Dateien aus / etc / skel / kopieren, bei denen es sich um Skelettdateien für neue Benutzer handelt, die mit dem Befehl useradd in Debian-basierten Distributionen erstellt wurden:

cp -nr /etc/skel/. ~/

Diese Dateien werden bei jeder Anmeldung automatisch von der Shell geladen. Wie Sie diese Profildateien laden, erfahren Sie in der Shell-Handbuchseite. Wenn Sie die Bash-Shell auf spezielle Weise verwenden (z. B. über ssh, ansible usw.), sollten Sie den Befehl 'bash -ilc "verwenden, den Sie in ENV ausführen möchten, das von diesen Profildateien erstellt wurde". -i steht für eine interaktive Shell, die häufig von .bashrc benötigt wird. -l Anmeldeshell, mit der .profile geladen wird (oder .bash_profile vorhanden ist - siehe Handbuchseite von bash), die dann .bashrc lädt

Juraj Michalak
quelle
0

Ich bevorzuge GUI-Texteditoren wie BBEdit oder TextWrangler. Diese Texteditoren können mit unsichtbaren Dateien wie .profile und .bash_profile umgehen und haben im Gegensatz zu nano, einer Konsolenschnittstelle, den Vorteil einer grafischen Benutzeroberfläche.

TextWrangler

BBEdit

Kaydell
quelle
0

Sie können auch einen GUI-Texteditor wie TextEdit verwenden:

touch ~/.bash_profile
open -e ~/.bash_profile

open -eist eine Abkürzung für open -a TextEdit.

Sie müssen nicht unbedingt .profile oder .bashrc erstellen. Terminal und iTerm 2 öffnen neue Shells als Login-Shells, sodass bash .bashrc nicht liest. Wenn sowohl .bash_profile als auch .profile vorhanden sind, liest bash nur .bash_profile, wenn es als interaktive Anmeldeshell aufgerufen wird. .profile wird von ksh gelesen, wenn es als interaktive Anmeldeshell aufgerufen wird, und von bash, wenn es als sh als interaktive Anmeldeshell aufgerufen wird.

Ich habe iTerm 2 tatsächlich angewiesen, neue Shells als nicht angemeldete Shells zu öffnen, und mein .bash_profile enthält nur eine Zeile wie . ~/.bashrc. tmux und der Shell-Modus in Emacs öffnen standardmäßig neue Shells als Nicht-Login-Shells. .bash_profile wird noch gelesen, wenn ich auf meinen Computer ssh.

Lri
quelle
Lassen Sie mich sehen, ob ich das habe ... Sie haben beide ~/.bash_profileund ~/.profile? Und du hast auch ~/.bashrc?
Thi G.
Ich habe kein .profile und mein .bash_profile enthält nur . ~/.bashrc.
Lri