Ich habe eine Funktion, die die Epochenzeit auf das Datum umrechnet. Hier ist die Definition
date1(){
date -d @$1
}
Ich möchte schreiben können:
$ date1 xxxyyy
Wobei xxxyyy der Parameter ist, den ich in meine Funktion übergebe, damit ich das entsprechende Datum erhalten kann. Ich verstehe ich es entweder zu addieren haben .bash_profile
, .profile
oder .bashrc
und dann beziehen sie:
$ source file
Ich bin mir aber nicht sicher, in welcher Datei ich es ablegen soll. Derzeit habe ich es in .profile
. Aber um es laufen zu lassen, muss ich source .profile
jedes Mal tun .
Idealerweise sollte es verfügbar sein, wenn der Computer wie die Umgebungsvariable gestartet wird.
Antworten:
Von
man bash
:Mit anderen Worten, können Sie es in einen der setzen
~/.bash_profile
,~/.bash_login
oder~/.profile
, oder alle Dateien ,source
d entweder die . In der Regel~/.profile
wird als Quelle~/.bashrc
die "persönliche Initialisierungsdatei für Login-Shells" ausgeführt.Um es zu aktivieren, starten Sie entweder eine neue Shell,
exec $SHELL
oder führen Sie sie aussource ~/.bashrc
.quelle
.bash_profile
ich diessource ~/.bash_profile
jedes Mal tun, wenn ich das Terminal über eine Verknüpfung öffneCtrl+Alt+T
.source ~/.bash_profile
jedes Mal müssen, ist dies ein Hinweis darauf, dass Ihr Bash-Setup nicht dem Standard entspricht oder fehlerhaft ist (gemäß derman bash
genannten Ausgabe). Bist du sicher, dass du Bash ausführst? Zum Beispielecho $BASHPID
druckt irgendetwas?#!/bin/sh
oben hinzufügen.profile
, um eine Funktion zu definieren?Nachdem Sie die Funktion in Ihrer definiert haben
.profile
, fügen Sie hinzuexport -f date1
. Dadurch wird die Funktion zur Verwendung durch Ihre Anmeldeshell exportiert.quelle
Anpassungen für interaktive Shells werden vorgenommen
~/.bashrc
. Dinge, die Sie ausführen möchten, wenn Sie sich anmelden, gehen in~/.profile
(oder~/.bash_profile
, aber es wird oft nicht geladen, wenn Sie sich grafisch anmelden ).Setzen Sie diese Funktionsdefinition in
~/.bashrc
.Da bash nicht geladen wird,
.bashrc
wenn es sich um eine Login-Shell handelt, müssen Sie dies erzwingen: Schreiben Sie ein~/.bash_profile
Containingdh laden
~/.profile
, und auch laden,~/.bashrc
wenn die Shell interaktiv ist.Siehe Alternative zu .bashrc und die dort verlinkten Beiträge.
quelle
csh und tcsh unterstützen keine Funktionen wie bash, aber Sie können es tun.
Zum Beispiel ist hier eine einfache Funktion zum Drucken von Text
Übergabe von Argumenten an das Skript
Mehrzeiliger Code wie eine if-Anweisung ist etwas kompliziert, aber los geht's.
Sie müssen noch evalieren, aber der komplexeste Teil ist die
\!:[x]
Syntax, um die Eingabe über die Befehlszeile zu erhalten.Das sollte ausreichen, um Sie in Ordnung zu bringen.
quelle
Sie können alle aktuellen Funktionen mit typeset nach bashrc umleiten .
So füge ich beispielsweise eine Funktion eines Openstack-Befehls mit optionalem Parameter in bashrc ein:
Jetzt wird es für zukünftige Sitzungen gespeichert und kann wie folgt verwendet werden:
oder
quelle
Punkt 18: In meinem älteren Gedächtnis, als ein Admin ksh und bash lernte, war es umgekehrt. 1: - Der Inhalt von / etc / profile ist sysWide. / etc / skel enthielt die Datei, die neuen Konten übergeben wurde. Seit Bash ist nun Prime allen Distributionen gemeinsam. Das nächste wäre 2: - ~ / .profile als Systemstandard, dann würde in den Inhalten von .profile "if exists" .bash_profile gesetzt -> 3: - .bash_profile 4: - .bash_login 5: -. bashrc .bash_aliases sein Meiner Meinung nach ist die richtige Reihenfolge, die Einrichtung der Standard-Terminal- und Shell-Umgebung und übliche .bash_login nie gefunden oder vorhanden (es ist benutzerdefiniert pro Benutzer). Mit .profile $ PATH als main, wenn das.
Ich stelle fest, dass jetzt auch .bash_profile hinzugefügt wird .profile dominiert immer noch und respektiert das Vorhandensein von .bash_profile nicht. Zusammen mit den Header-Informationen wird niemand aktualisiert, z. B .: Bash-Start Beispiele - diese Verzeichnisstruktur ist nicht mehr vorhanden - zusammen mit Beispielen und / oder Dateien werden gzip-komprimiert. Ein Update auf Gnu-Bash ist also angebracht
quelle