Bash_profile bearbeiten?

3244
JD Isaacks

Ich versuche, Bash zu lernen. Ich benutze Ubuntu.

Ich möchte eine Funktion hinzufügen. Ich bin mir nicht sicher, ob ich eine .profileoder eine .bash_profileDatei erstellen muss, damit ich beide im ~/Verzeichnis erstellen kann .

Ich füge so etwas in jedem hinzu:

myfunc() { echo "function ran" } 

Ich melde mich von meinem Benutzer ab und melde mich wieder an. Ich führe das in der Kommandozeile aus:

me @ host: ~ $ myfunc

was gerade zurückkehrt:

myfunc: Befehl nicht gefunden

Nicht sicher, was ich falsch mache.

1
sind Sie auf Ihrer eigenen Box oder einer System-Box (dh in der Schule, Arbeit?). Ist auch die Box Vanille oder maßgeschneidert? kann bei der Diagnose helfen Roy Rico vor 13 Jahren 0
Gleich nachdem Sie Ihr .profile erstellt haben, wird es nicht sofort implementiert. Starten Sie entweder eine neue Shell oder geben Sie `source ~ / .profile` ein Jarvin vor 13 Jahren 3
@Roy Ich bin der Administrator, ich habe das Betriebssystem und alles installiert. Aber ich bin ein totaler n00b in linux. JD Isaacks vor 13 Jahren 0
@ Dan: Er sagte, er habe sich ab- und wieder eingeloggt. Dennis Williamson vor 13 Jahren 0

3 Antworten auf die Frage

4
garyjohn

Ihre ~ / .profile oder ~ / .bash_profile werden vom Anmeldeprozess bezogen. Eine Shell, die Sie in einem Terminalfenster ausführen, wird in einem anderen Prozess ausgeführt, der vom Anmeldeprozess abhängt. Bestimmte Einstellungen des Anmeldeprozesses werden in untergeordnete Prozesse exportiert, Aliase und Funktionsdefinitionen jedoch nicht. Aliase und Funktionen sollten stattdessen in der rc-Datei Ihrer Shell definiert werden, in diesem Fall ~ / .bashrc. Diese Datei wird von jedem interaktiven Bash-Prozess bezogen.

Um festzulegen, ob Sie Umgebungsvariableneinstellungen und anderen Startcode in ~ / .profile oder ~ / .bash_profile einfügen sollten, sagt man bash, dass Login-Shells nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile suchen diese Reihenfolge und lesen Sie die erste gefundene. Wenn Sie also sowohl ~ / .bash_profile als auch ~ / .profile haben, wird nur ~ / .bash_profile gelesen und ~ / .profile ignoriert. Welche Sie verwenden, liegt ganz bei Ihnen. Wenn Sie jedoch andere Shells als bash verwenden möchten, können Sie Ihre Einstellungen in ~ / .profile einfügen und ~ / .bash_profile löschen.

Eine Funktion kann exportiert werden (ist aber, wie Sie sagten, standardmäßig nicht). Dennis Williamson vor 13 Jahren 0
2
BloodPhilia

Geben Sie in der Befehlszeile Folgendes ein:

function myfunc() 

EINGEBEN

{ 

EINGEBEN

echo "function ran" 

EINGEBEN

} 

EINGEBEN

Rufen Sie die Funktion auf, indem Sie die Funktion wie folgt eingeben:

$ myfunc 

Entfernen Sie die Funktion mithilfe von:

unset -f myfunc 

Überprüfen Sie diese für weitere Informationen:

Das hat funktioniert. Ich frage mich, warum das Hinzufügen zu der Datei nicht. JD Isaacks vor 13 Jahren 0
@john fügte ein 'Echo, das jetzt Johns Funktionen definiert' in Ihre Dateien ein, um zu sehen, wann sie definiert werden. Sie möchten sie wahrscheinlich in Ihrem `~ / .bashrc` haben msw vor 13 Jahren 1
Ich bin mir nicht sicher, was du meinst. von "Echo Definieren von Johns Funktionen" Vielleicht in Ihrer eigenen Antwort ausführlich? Aber ich habe versucht, es zu .bashrc hinzuzufügen, und es gab mir keinen Fehler, aber auch keine Ausgabe. Ging einfach zur nächsten Zeile, als ob ich einfach die Eingabetaste drücke JD Isaacks vor 13 Jahren 0
@John, bitte lest das. Angesichts Ihres Lebenslaufs und Ihrer Erfolge scheinen diese Fragen unter Ihnen zu liegen. Du bist eindeutig nicht dumm, und Unwissenheit kann behoben werden. Wenn Sie Illustrator begreifen können, sollte Bash im Vergleich einfach sein, erfordert aber noch einige Hausaufgaben. http://tldp.org/LDP/Bash-Beginners-Guide/html/ Frieden raus. msw vor 13 Jahren 0
[`function foo ()` ist schlecht.] (http://mywiki.wooledge.org/BashPitfalls#function_foo.28.29) grawity vor 13 Jahren 0
1
Anders

Um zu sehen, welche Dateien in welcher Reihenfolge ausgeführt werden, möchten Sie vielleicht einen einzelnen Echo- oder Printf-Befehl in diese Dateien einfügen. Dann werden Sie sehen, wann sie ausgeführt werden.

# You could try this echo "This will be printed" printf "This will also be printed (%d)\n" 10 

Um zu sehen, wie Echo und Drucken funktionieren, müssen Sie den Befehl man (1) verwenden und in der Manpage nach bash (1) suchen. Die Klammer hinter den Befehlen sagt Ihnen, in welchem ​​Abschnitt des Handbuchs Sie die Informationen finden. 1 bedeutet ein gewöhnlicher Befehl. Sie sollten diese Befehle ausprobieren:

man man man -k manual man bash 

Suchen Sie auf der manuellen Seite für bash nach Abschnitt "SHELL BUILTIN COMMANDS" (versuchen Sie es und schreiben Sie, was Sie suchen, oder verwenden Sie die Leertaste). Es gibt Informationen zu den Befehlen, die in bash integriert sind, wie echo und printf.