Am Sam den 20 Jan 2001 um 09:17:16 +0100 schrieb Hilmar Preusse:
Besser Du schreibst das in .bashrc: export BASHRC_RUN=1
und das in .profile: test -z "$BASHRC_RUN" && . ~/.bashrc
Das ist ja schon deshalb sinnlos, weil die .profile beim login ausgefuehrt wird, also nur genau ein mal, wo soll da was gesetzt sein? Ausser login vererbt dir irgendwelche Schaetze ;-)
Nein, es wird nichts gesetzt. Durch die nicht gesetzte Variable wird eindeutig festgestellt, daß es sich um eine Login-Shell hendelt.
Oh, oh, das braucht man doch nicht festzustellen, wenn man das a priori schon weis. Euer Sportauspuff in den Skripten macht nur das, was die shell auch so schon machen wuerde. Ich wiederhole: man bash (jetzt sofort!)
Damit hast Du Dir IMHO in den Fuß geschossen. Warum testet man nicht einfach die Existenz der ~/.bashrc ab und läßt die grundsätzlich laufen? Bzw. die zweite Lösung wäre, die Varible nicht zu
Du wirst staunen, genau das ist das default. --> man bash
Warum sagst Du daß nicht gleich? Dann wird die ~/.bashrc ja doch gelesen und Konrads Lösung funktioniert doch, wie man schon in 20010118143558.A12730@rncmm2.urz.tu-dresden.de bestaunen durfte.
INVOCATION A login shell is one whose first character of argument zero is a -, or one started with the --login option.
An interactive shell is one whose standard input and out put are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.
So weit alles klar.
The following paragraphs describe how bash executes its startup files. If any of the files exist but cannot be read, bash reports an error. Tildes are expanded in file names as described below under Tilde Expansion in the EXPANSION section.
When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behav ior.
Keine Rede von einer .bashrc beim login (Aha?).
When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if it exists.
Ok, soviel zu einer reinen login shell.
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the
Deshalb ist die Variable BASHRC_RUN sinnlos.
--norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.
When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following command were executed: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi but the value of the PATH variable is not used to search for the file name.
Hilmar wird sich gleich Montag frueh eine kuerzere Leine kaufen gehen. <duck>
andre