ubuntuusers.de

Import eines Skripts in die .bashrc

Status: Gelöst | Ubuntu-Version: Lubuntu 16.04 (Xenial Xerus)
Antworten |

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

Ich bin gerade dabei, ein Howto zu erstellen, das darauf aufbaut, ein Skript in die .bashrc zu importieren. Dazu wird hier geschrieben:

You'll want to pull down the file and add it to your bash profile/configuration (i.e ~/.bashrc, ~/.profile, ~/.bash_profile, etc). It must be the last thing imported in your bash profile.

Ich habe, wie vorgeschlagen, die Zeile

source ~/.bash-preexec.sh

in die .bashrc eingefügt. Und es funktioniert unabhängig davon, ob ich die Zeile an den Anfang, die Mitte oder das Ende der .bashrc setze.

Kann mir jemand erklären, warum der Autor darauf hinweist, dass es das Letzte sein muss, das meinem Bash-Profil hinzugefügt wird? Oder habe ich das falsch verstanden, und es ist nicht die Position in der .bashrc genmeint?

Ich wäre dankbar für Aufklärung …

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5814

Wohnort: Ankh-Morpork

Ganz einfach: Er möchte damit vermeiden das andere Einstellungen in der .bashrc die aus der gesourcten Datei überschreiben. Wenn das eh nicht passiert ist es egal wo der source-Befehl steht. Wenn du aber eine Datei sourced die z.B. den PATH verändert (z.B. ihn um /opt/foo/bin erweitert) und du das auch in der normalen .bashrc machst (z.B.um /opt/bar/bin) verändert sich je nach Position die Reihenfolge.

Sourcen vor dem Ändern des PATH: /alter/path:/opt/foo/bin:/opt/bar/bin

Sourcen nach dem Ändern des PATH: /alter/path:/opt/bar/bin:/opt/foo/bin

Kleiner aber feiner Unterschied, der je nachdem was gemacht wird einiges Zerschießen kann.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

lionlizard schrieb:

Ich bin gerade dabei, ein Howto zu erstellen, das darauf aufbaut, ein Skript in die .bashrc zu importieren.

Wozu denn das? Warum sollte man ein komplettes Skript in jeder interaktiven Shell ausführen? Man bedenke, dass das immer die Ladezeit einer interaktiven Shell erhöht.

lionlizard

(Themenstarter)
Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

Danke schön. Wird man also in der Regel nur drauf achten müssen, wenn man mehr als ein Skript importiert, und dann ist es eh in der Verantwortung des Benutzers, zu prüfen, ob die Erweiterungen sich nicht gegeseitig stören.

Aber ich werde den Hinweis natürlich mit ins Howto übernehmen. Aber man (ich!) möchte schließlich wissen, wieso man so etwas schreibt … 😉

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

lionlizard schrieb:

Aber ich werde den Hinweis natürlich mit ins Howto übernehmen. Aber man (ich!) möchte schließlich wissen, wieso man so etwas schreibt … 😉

Wir ja auch, deshalb die Nachfrage. 😉

lionlizard

(Themenstarter)
Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

rklm schrieb:

Wozu denn das?

Weil ich das cool finde.

Warum sollte man ein komplettes Skript in jeder interaktiven Shell ausführen?

Damit immer schön mitprotokolliert wird, wie lange jeder Befehl dauert, ohne dass ich mich zusätzlich drum kümmern muss.

Man bedenke, dass das immer die Ladezeit einer interaktiven Shell erhöht.

Stimmt, das läppert sich im Lauf eines Jahres bestimmt auf einige Minuten zusammen 😈

Nein, ernsthaft. Das ist für System-Noobs wie mich, und deswegen wird es ja auch kein Wiki sondern ein Howto. Ich finds nützlich und habe das bei mir fest eingebaut, und ich könnte mir vorstellen, dass es andere gibt, denen es ähnlich geht. Die 3 CPU-Zyklen, die das mehr verbraucht, muss ich mir bei meiner 4-Kern CPU nicht mal vom Mund absparen.

[Edit:] Das sieht bei mir z.B. so aus:

stepfahn@lubu-16:~$ ls -l /
insgesamt 111
drwxr-xr-x   2 root     root     12288 Okt 15 02:45 bin
drwxr-xr-x   6 stepfahn stepfahn  3072 Okt 22 12:45 boot
drwxr-xr-x   2 root     root      4096 Apr 29 05:22 cdrom
drwxrwx---  22 root     plugdev   4096 Sep 23 13:06 Daten
drwxr-xr-x  21 root     root      5380 Okt 24 07:52 dev
drwxr-xr-x 146 root     root     12288 Okt 22 12:40 etc
drwxr-xr-x   5 root     root      4096 Okt 15 18:29 home
lrwxrwxrwx   1 root     root        35 Okt 22 12:44 initrd.img -> boot/initrd.img-4.4.0-45-lowlatency
lrwxrwxrwx   1 root     root        32 Okt 22 12:40 initrd.img.old -> boot/initrd.img-4.4.0-45-generic
drwxrwxr-x  22 stepfahn stepfahn  4096 Okt 10 00:58 install
drwxr-xr-x  24 root     root      4096 Okt  6 06:12 lib
drwxr-xr-x   2 root     root      4096 Apr 29 06:18 lib32
drwxr-xr-x   2 root     root      4096 Jul  7 03:43 lib64
drwxrwxrwx   2 root     root      4096 Jul 29 15:33 links
drwxr-xr-x  11 root     root      4096 Okt 10 09:27 media
drwxr-xr-x   8 stepfahn stepfahn  4096 Okt 15 16:52 Medien
drwxr-xr-x   3 stepfahn stepfahn  4096 Mai 26 18:14 mnt
drwxr-xr-x  11 root     root      4096 Okt 21 22:14 opt
dr-xr-xr-x 391 root     root         0 Okt 23 08:18 proc
drwx------  23 root     root      4096 Sep 21 15:08 root
drwxr-xr-x  27 root     root       940 Okt 24 07:52 run
drwxr-xr-x   2 root     root     12288 Okt 15 02:45 sbin
drwxr-xr-x   2 root     root      4096 Apr 21  2016 srv
drwxrwxr-x  23 stepfahn stepfahn  4096 Okt 23 23:47 storage
dr-xr-xr-x  13 root     root         0 Okt 23 09:09 sys
drwxrwxrwt  18 root     root      4096 Okt 24 09:20 tmp
drwxr-xr-x  12 root     root      4096 Okt 19 14:05 usr
drwxr-xr-x  13 root     root      4096 Apr 21  2016 var
lrwxrwxrwx   1 root     root        32 Okt 22 12:44 vmlinuz -> boot/vmlinuz-4.4.0-45-lowlatency
lrwxrwxrwx   1 root     root        29 Okt 22 12:40 vmlinuz.old -> boot/vmlinuz-4.4.0-45-generic
Start:=09:20:54.655708441
Ende: =09:20:54.663118169
stepfahn@lubu-16:~$ 
Antworten |