~ / .profile wird beim Start nicht ausgeführt

0

Ich möchte einige Skripte beim Systemstart ausführen. In der Datei ~ / .profile habe ich Folgendes hinzugefügt:

WORKSPACE="~/Development/workspace"
alias workspace="cd $WORKSPACE"

Ich möchte also, dass dieser "Arbeitsbereich" -Alias ​​nach dem Start verfügbar ist. Vielleicht ist es nicht der richtige Ort, um diese Variablen zu definieren.

pocoa
quelle
Möglicherweise möchten Sie die benannten Verzeichnisse von zsh durchsuchen. Wenn du export workspace=~/Development/workspaceSie können einfach nur auf den Pfad als verweisen ~workspace; z.B. cd ~workspace
Michael Mrozek
@Mich hab ich mir gerade angewöhnt. Ich stimme immer zu schließen und zu kommentieren. Dies ist zum Vorteil von Benutzern mit geringen Wiederholungszahlen (insbesondere, wenn die Operation mit geringen Wiederholungszahlen ausgeführt wird), da sie die zu schließenden Stimmen nicht sehen können
Earlz
1
@pocoa: Sie geben nicht an, auf welche Art von "Startup" Sie sich beziehen. $ SHELL-Startup? Windowmanager starten? ein anderes Programm starten? Systemstart?
akira

Antworten:

2

Vielleicht wollten Sie WORKSPACE exportieren?

export WORKSPACE="~/Development/workspace"

Sie sollten in der Lage sein, 'set' auszuführen und den Wert von $ WORKSPACE so zu sehen, wie er ist - er ist gesetzt, aber keine Umgebungsvariable, da Sie ihn nicht exportiert haben. AFAIK, Ihr Alias ​​ist nur in der obersten Shell verfügbar. Sie würden den Alias ​​in platzieren .bashrc oder darum herum, um es auch in Unterschalen verfügbar zu machen. (Weitere Informationen finden Sie in §6.2 'Bash - Startdateien' des Bash - Handbuchs. Überprüfen Sie auch, ob es keine gibt .bash_login oder .bash_profile Datei in Ihrem Home-Verzeichnis; eine davon würde bevorzugt verwendet werden als - nicht so gut wie - die .profile.)

Eine andere Möglichkeit - Sie sind nicht für die Verwendung der Bash- oder Korn-Shell konfiguriert. Das halte ich für unwahrscheinlich, aber nicht für völlig ausgeschlossen. Die C-Shell-Familie verwendet .login und .cshrc Dateien statt.

Jonathan Leffler
quelle
Wie würdest du das machen? Ich weiß, dass ich Aliase hinzufügen kann, wenn ich in die Befehlszeile tippe. Aber ich möchte das nicht jedes Mal tun, ich möchte es automatisieren.
pocoa
Ja, .bash_login und .bash_profile existieren nicht.
pocoa
Aliase können nicht exportiert werden. In diesem Fall muss die Variable nicht exportiert werden, wenn sie in den Umgebungen der untergeordneten Elemente der Shell, in der sie definiert ist, nicht benötigt wird. Einige Benutzer exportieren jede von ihnen erstellte Variable. Dies kann jedoch zu Problemen mit unerwarteten Ergebnissen führen, die auf Namenskollisionen oder nicht initialisierte Variablen in Skripts zurückzuführen sind.
Dennis Williamson
@Dennis: AFAICT (und sicherlich wie ich es beabsichtigt habe), ich habe nichts über den Alias ​​gesagt, der exportiert oder exportierbar ist. Sie haben Recht, dass nicht jede Variable exportiert werden muss. wieder habe ich nicht gesagt, dass sie alle exportiert werden sollen. Es hängt davon ab, ob @pocoa eine andere Verwendung für die Variable als im Alias ​​hat. Mein Verdacht ist, dass es allgemein als exportierte Variable nützlich sein könnte, aber das ist nicht zwangsläufig der Fall.
Jonathan Leffler
Entschuldigung, wenn ich unklar war. Ich wollte ergänzen, was Sie gesagt haben, nicht korrigieren. Wenn jemand eine ähnliche Funktionalität wie ein Alias ​​haben möchte, diese jedoch in untergeordneten Prozessen verfügbar sein soll, können Funktionen in Bash exportiert werden.
Dennis Williamson
0

Also, was genau ist deine Frage? Meinten Sie alias "workspace" ist nicht verfügbar, wenn Sie sich in der Unix-Box anmelden?


quelle
Ja. Ich möchte "Arbeitsbereich" eingeben und auf meinen Arbeitsbereichordner zugreifen.
pocoa
Meinten Sie, wenn Sie beim Anmelden "workspace" eingeben, gelangen Sie nicht in den entsprechenden Ordner? Haben Sie versucht, es als Alias ​​workspace = "cd ~ / Development / workspace" zu setzen?
@ Kunal: In der Kommandozeile? Ich möchte es nicht jedes Mal tippen.
pocoa
0

Ich zog nach:

~/.bashrc

es funktioniert jetzt.

pocoa
quelle
0

Wenn Sie eine Umgebungsvariable festlegen möchten, sollten Sie in der Regel verwenden export im .profile, wie andere schon sagten. Sie können es auch einfach einstellen .bashrc, aber es wird eine Verschwendung von Gedächtnis sein (nicht, dass es sehr wichtig ist, nur als Prinzip der Dinge). Aliase sollte man in jeder Shell setzen, damit das geht .bashrc. Oder noch besser .alias, die standardmäßig von bezogen wird .bashrc (Zumindest in Ubuntu, aber wahrscheinlich auch in anderen Distributionen).

petersohn
quelle
Siehe meinen Kommentar zu Jonathan ist Antworten. Variablen sollten nicht routinemäßig exportiert werden.
Dennis Williamson