From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 03 11:51:01 2019 Received: (at 36021) by debbugs.gnu.org; 3 Jun 2019 15:51:01 +0000 Received: from localhost ([127.0.0.1]:42754 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hXpEj-00049y-2P for submit@debbugs.gnu.org; Mon, 03 Jun 2019 11:51:01 -0400 Received: from smtp2.science.ru.nl ([131.174.16.145]:56226) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hXpEe-00049l-C3 for 36021@debbugs.gnu.org; Mon, 03 Jun 2019 11:50:57 -0400 Received: from [145.116.191.160] (ip-145-116-191-160.wlan-int.ru.nl [145.116.191.160]) (authen=dfrumin) by smtp2.science.ru.nl (8.14.4/5.32) with ESMTP id x53FortK007628; Mon, 3 Jun 2019 17:50:54 +0200 Subject: Re: [bug#36021] [PATCH] search-paths: 'environment-variable-definition' output for fish To: Meiyo Peng References: <20190531103630.6739-1-dfrumin@cs.ru.nl> <4c3d1d91-18ae-954f-2f0f-a979a974fb2c@cs.ru.nl> <87o93fkyhs.fsf@riseup.net> From: Dan Frumin Message-ID: Date: Mon, 3 Jun 2019 17:50:53 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: <87o93fkyhs.fsf@riseup.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 36021 Cc: 36021@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Meiyo, On 03-06-19 07:51, Meiyo Peng wrote: > Hi Dan, > > Dan Frumin writes: > >> Some background on this patch: >> Right now whenever I do any Guix operation that requires me to modify >> environment variables (e.g. installing a Guile library requires me to update >> $GUILE_LOAD_PATH afterwards), Guix helpful tells me what commands I have to run >> to update the variables. >> >> However, those commands are currently in bash/POSIX(?) format `export >> VAR=VALUE`. I've modified the `environment-variable-definition` function to >> support the syntax for Fish shell as well. I don't know if this method of >> looking at the $SHELL variable is sound, but it works on my machine. >> >> Documentation for the `set' function in Fish: https://fishshell.com/docs/current/commands.html#set >> >> PS: this is my first non-package patch for Guix so I apologize if there is something wrong with the patch > > I think this patch will cause more trouble than good. Does this patch > replaces etc/profile with fish syntax script? etc/profile is supposed > to be in POSIX shell syntax. Fish shell has it's own configuration > files in /etc/fish/config.fish and /etc/fish/conf.d/*.fish. If you > really want to generate fish syntax scripts, please put them in > /etc/fish/config.fish or /etc/fish/conf.d/*.fish. > No, this patch doesn't touch etc/profile in any way, it is only concerned with the output that you get from `guix package` on your terminal. So I guess it's kind of orthogonal to the upgraded fish package that you made? > See: > 1. https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00071.html > 2. https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00333.html > 3. https://issues.guix.gnu.org/issue/34153 > > Have you tried the fish-foreign-env package? You can source bash > scripts in fish via `fenv source ~/.guix-profile/etc/profile`. That's how > the fish shell in Guix set up environment variables upon login. > Thanks! This is quite nice, I should upgrade my Fish installation. > Perhaps we can handle this better. Do you have any suggestions? My > idea: > > 1. The fish-foreign-env package is very useful but it's not installed by > default in order to avoid polluting user's profiles according to the > Guix convention. In this case I think it's a useful utility rather than > pollution. Do you want it to be installed together with the fish > package by default? Well, you added it as part of the fish dependency, right? I think it makes sense, especially on Guix SD. > > 2. etc/profile is supposed to be sourced by a login shell. And we > should avoid sourcing it from a non-login shell. That's why I made the > fish package in Guix only sources it upon login. That means starting a > new fish shell won't source it automatically. So please source it > manually if you need the new environment variables (fenv source > ~/.guix-profile/etc/profile). I am not knowledgeable enough to comment on this, but it seems to me that it is done similarly if you are using bash: e.g. you have to source the profile yourself if you want to get it in a non-login shell. > > 3. We can write better documentations explaining how to deal with fish > shell in Guix. There's an old discussion about having a Guix wiki or > a Guix book. > Yeah, more documentation is always better :) Best regards, -Dan > > -- > Meiyo Peng > https://www.pengmeiyu.com/ >