Hi Gottfried, I see 3 potential problems. 1. The snippet you addet to .bashrc refers to a variable named "GUIX_EXTRA_PROFILES". Is this variable defined somewhere? Is seems it isn't. It should be assigned the path to the directory holding your profiles so you could for example add a GUIX_EXTRA_PROFILES=/path/to/directory/with/my/guix/profiles line before the `for` loop. Of course, replacing the "/path/to/directory/with/my/guix/profiles" with the appropriate path for your system. 2. Why is `basename` being used here? Consider the following example: - "GUIX_EXTRA_PROFILES" is set to /home/user/my-extra-guix-stuff - you have 1 extra Guix profile under "/home/user/my-extra-guix-stuff/music" - the profile mentioned above has its `profile` script under "/home/user/my-extra-guix-stuff/music/etc/profile" Now, let's look at what the profile=$i/$(basename "$i") line does. This line is inside a `for` loop, in each iteration the variable "i" holds the path to one of the profiles under "/home/user/my-extra-guix-stuff". In one iteration "i" is going to hold the string "/home/user/my-extra-guix-stuff/music". The `basename "$i"` command therefore outputs just "music". So the line we're analyzing assigns the string "/home/user/my-extra-guix-stuff/music/music" to variable called "profile". Is this what we wanted? The next line is going to check for the existence of file "/home/user/my-extra-guix-stuff/music/music/etc/profile" but it should instead check for the existence of "/home/user/my-extra-guix-stuff/music/etc/profile". So you might want to e.g. replace the line profile=$i/$(basename "$i") with just profile=$i 3. You edited "~/.bash_profile" which is indeed known to be read by bash. However, this is not that simple. Bash has 3 possible modes of running: non-interactive shell, interactive shell and (interactive) login shell. The "login shell" mode is meant to be used when, well, bash is spawned in a terminal upon user login. "~/.bash_profile" is *only* read by bash in this mode and not in the other 2. In interactive shell mode, bash reads "~/.bashrc" *instead*. When you, for example, execute a `bash` command inside an already-running shell, the child bash shell that spawns is not going to consider itself a login shell but rather a mere interactive shell. To make bash think is is a login shell, you can e.g. start it with a `-l` flag, like `bash -l`. The problem is, most terminal emulators by default don't start bash this way. The 2 solutions I've been using are to either - change the configuration of one's terminal emulator to start bash with `-l` - or make the ".bashrc" script check if current interactive shell was spawned by a teminal emulator process and if yes, have it activate the Guix profiles. The 1st solution is the proper one, the 2nd one is just a workaround for terminal emulators that are not configurable enough :) Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Sun, 16 Apr 2023 13:09:00 +0000 Gottfried wrote: > Hi, > > according to the cookbook > I added > -------------------------------------------- > for i in $GUIX_EXTRA_PROFILES/*; do > profile=$i/$(basename "$i") > if [ -f "$profile"/etc/profile ]; then > GUIX_PROFILE="$profile" > . "$GUIX_PROFILE"/etc/profile > fi > unset profile > done > ----------------------------------------------- > into my .bash_profile file > in order to enable all profiles at login time: > ------------------------------------------------ > My .bash_profile file looks now like that: > > # Honor per-interactive-shell startup file > if [ -f ~/.bashrc ]; then . ~/.bashrc; fi > > for i in $GUIX_EXTRA_PROFILES/*; do > profile=$i/$(basename "$i") > if [ -f "$profile"/etc/profile ]; then > GUIX_PROFILE="$profile" > . "$GUIX_PROFILE"/etc/profile > fi > unset profile > done > ----------------------------------------------- > > but when starting MATE Desktop all my profiles are not enabled. > > Could somebody help because probably the two entries in my .bash_profile > got a mistake. >