Alias beim Start definieren

Spot

Spot

Waldgänger
Hallo !

Ich möchte ein Alias beim start definieren.

Diese habe ich dann in die .bashrc des Benutzers geschrieben:

.bashrc schrieb:

Meine Oberfläche starte ich mit "startx".
Deshalb hab ich in der .xinitrc folgendes eingefügt:

.xinitrc schrieb:
numlockx &
pypanel &
source .bashrc &
exec startfluxbox

Doch leider funktioniert das nicht :(
Wenn ich nach dem Start von Fluxbox in der Konsole "cl" eintippe, kommt ein "command not found".
Gebe ich dann aber:

Code:
source .bashrc

ein und tippe anschließend "cl" ein, führt er korrekterweise "clear" aus.

Wo liegt mein Fehler ? :(
 
Hi,

in der .xinitrc hat das nichts zu suchen. Dein Problem duerfte sein, dass die .bashrc nicht in der .bash_profile gesourced wird. Schau dich einfach mal nach dem Prinzip der config Dateien der Bash um. Die .bashrc wird fuer Nicht-Login Shells benutzt, die .bash_profile wird fuer Login Shells benutzt, d.h. in aller Regel willst du die .bashrc in der .bash_profile sourcen.

mfg,
bytepool
 
Was willst du da mit source .bashrc?
Das tut nur lediglich die .bashrc neu einlesen, falls man kein Bock hat sich auszuloggen und wieder anzumelden.
Mit anderen Worten, wenn du startx ausführst, wird nur die .bashrc neu eingelesen, aber dein 'cl' wird nicht ausgeführt.
 
@defcon
Nein, der TE war schon auf der richtigen Spur, siehe mein Post vor dir. ;)

mfg,
bytepool
 
Thx @ bytepool - es geht !

Hab in der .xinitrc jetzt die source-Zeile gelöscht und in meinem Home Verzeichnis eine .bash_profile (existierte vorher nicht) erstellt.

In die .bash_profile hab ich folgendes geschrieben:

.bash_profile schrieb:

Nun funktionieren die definierten Alias direkt nach dem Start :)
 
Hi,

ja, die meisten Distributionen machen diesen Schritt direkt fuer dich, aber bei einer Distri wie Arch, bei der alles erstmal mehr oder weniger im Grundzustand ausgeliefert wird, muss man doch noch Hand anlegen. ;)

Aber Shells und ihre Konfigurationsdateien sind ja sowieso ein Thema fuer sich, ich glaube die Bash hat 4 oder 5 verschiedene standard Dateien, die in bestimmer Reihenfolge und manche nur zu bestimmten Zeiten geladen werden. Ich habe da auch erst richtig durchgeblickt, nachdem ich ein Buch zur Bash und Z-Shell durchgearbeitet hatte.

mfg,
bytepool
 
Naja so tief will ich dan nun auch wieder nicht ins System eindringen ;)

So wie es jetzt läuft ist super :D
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Hallo - irgendwie scheinen Teile des Alias-Befehls irgnoriert tu werden wenn sie "$" Zeichen enthalten :(

Kleines Beispiel:

Code:
[joschi@joschi ~]$ alias hgm='scrot '%d.%m.%Y-%H.%M-[B]$wx$h[/B].jpg''

Und das hat er dann wirklich gespeichert:

Code:
[joschi@joschi ~]$ alias hgm
alias hgm='scrot %d.%m.%Y-%H.%M-.jpg'

Warum werden die $-Spezifikatoren (scrot-Intern) nicht vom alias Befehl gespeichert ?

Wenn ich den Befehl direkt in der Bash ausführe, geht es ohne Probleme...

Code:
[joschi@joschi ~]$ scrot '%d.%m.%Y-%H.%M-$wx$h.jpg' && ls -l *.jpg
-rw-r--r-- 1 joschi users 275026 21. Dez 20:30 21.12.2008-20.30-1680x1050.jpg

Was mach ich falsch ?
 
Zuletzt bearbeitet:
Das Dollarzeichen ist ein Metazeichen in der bash. Das musst du mitm backslash escapen.
Schau dir das btw mal genau an, das alias ist ein anderes als der Befehl, den du ausführst...



@bash files: so ziemlich am Ende von "man bash" stehen auch Infos zu den config-files:
Code:
FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bashrc
              The systemwide per-interactive-shell startup file
       /etc/bash.logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file
 
Das ist ja das blöde daran das der Alias ein andere Befehl ist als der den ich ausführe..... eben weil der Alias nicht richtig gespeichert wird.

Mit den \ davor klappt das auch nicht so richtig, denn dann werden die $-Spezifikationen an sich gespeichet. Das soll eben nicht so sein !
Bei scrot steht ja dann z.b. $w für die breite des Bildes, die dann im Dateinamen gespeichert werden soll.....

So sieht es mit den \ aus:

Code:
[joschi@joschi ~]$ scrot '%d.%m.%Y-%H.%M-\$wx\$h.jpg' && ls -l *jpg
-rw-r--r-- 1 joschi users 201659 21. Dez 21:22 21.12.2008-21.22-$wx$h.jpg
 
Hm, wie kommst du auf die unfassbar kreative Idee den funktionierenden Befehl zu verändern, anstatt die Änderungen mal beim nicht funktionierenden Alias auszuprobieren? o0

Aber ich bin mal weg, ist ja alles gesagt. Dollarzeichen müssen escapet werden, das alias ist anders als der von dir ausgeführte Befehl. Man möge genauer hinschauen.
 
Weiß ich auch nicht - entsprang wohl irgendeiner dunklen Ecke meine kopfes .... :brav:

So geht es auf jeden Fall: :)

Code:
alias hgm="scrot '%d.%m.%Y_%H%M-\$wx\$h.jpg'"
 

Ähnliche Themen

Kein WM startet mit Benutzer/root, außer Xfce !

Zurück
Oben