zsh-users
 help / color / mirror / code / Atom feed
From: Mikael Magnusson <mikachu@gmail.com>
To: Anthony Fletcher <anthony@bifb.org>
Cc: zsh-users@zsh.org
Subject: Re: autoload variables
Date: Mon, 30 Aug 2021 21:30:20 +0200	[thread overview]
Message-ID: <CAHYJk3Qoyz_VjePUZf=xu-h8ttnfrh370vCWuVE1MUu7pVWa4A@mail.gmail.com> (raw)
In-Reply-To: <CAPT4cGf3xGbvKuhrPVfzKo3FnB_-zb7pRwAs_musjCjS_BfuLw@mail.gmail.com>

On 8/30/21, Anthony Fletcher <anthony@bifb.org> wrote:
> On Mon, 30 Aug 2021 at 12:40, René Neumann <lists@necoro.eu> wrote:
>
>> Am 30.08.21 um 17:22 schrieb Anthony Fletcher:
>> > For instance, one variable is to identify the default uplink
>> > interface
>> >
>> >     export UPIF=$(ip -4 r | sed -n -e '/^default/ s/^default.*dev //;
>> > s/
>> > .*// p;q' )
>> >
>> > Useful when I'm debugging the network but not needed otherwise.
>>
>> Is there a reason you need this as a variable? Would a function
>>
>> upif() { ip -4 r | ... }
>>
>> not suffice?
>>
>> - René
>>
>
> A function would work but then you need to run it every time to get the
> same value..... and of course the variable is for other commands. Thus
>        systemcommand $(upif)
> In this particular case anything to do with the uplink interface (eg
> dump_dhcp6). I guess the function could cache the result for speed.

It's unclear from your examples if these variables actually need to be
in the environment (eg, used by the program automatically), or if
you're naming them on the command line (eg, some_cmd $myvars). In the
latter case, they don't need to be exported at all.

This may be an unpopular suggestion (I would also not use it :)), but
you can abuse global aliases in the latter case as well, if you are
very opposed to typing $(foo) instead of $FOO:
% alias -g '$UPIF=$(echo 123.12.2.15)'
% echo $UPIF
123.12.2.15

(keep in mind the word needs to appear separate from other words and
exactly as specified for this to work, eg not foo$UPIF or ${UPIF}).
(You also don't need the $ at all if you do this, so you could just
call it UPIF too, assuming you don't use this in the literal sense
(although if you did, you could write \UPIF in those cases).).

If you *do* need these in the environment, and assuming that they
don't change very often, you could initialize all of them in .zprofile
instead of .zshrc and they will just persist in your environment at no
extra startup cost. (You can do this for the latter case too,
actually).

-- 
Mikael Magnusson


  reply	other threads:[~2021-08-30 19:31 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-30 15:22 Anthony Fletcher
2021-08-30 15:41 ` Roman Perepelitsa
2021-08-30 16:40 ` René Neumann
2021-08-30 16:57   ` Anthony Fletcher
2021-08-30 19:30     ` Mikael Magnusson [this message]
2021-08-30 21:34     ` René Neumann
2021-08-30 21:46       ` Bart Schaefer
2021-08-31  0:10         ` Anthony Fletcher
2021-08-31 18:11           ` Roman Perepelitsa
2021-08-31 19:16             ` Bart Schaefer
2021-08-30 16:49 ` Bart Schaefer
2021-08-31 20:37 ` Marc Chantreux
2021-08-31 21:03   ` Roman Perepelitsa
2021-09-01  8:29     ` Marc Chantreux
2021-09-01  9:51       ` Roman Perepelitsa
2021-09-01 10:06         ` Marc Chantreux
2021-09-01 13:52           ` Bart Schaefer
2021-09-02 23:09         ` Anthony Fletcher
2021-09-03  0:07           ` Bart Schaefer
2021-09-03  6:52           ` Marc Chantreux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHYJk3Qoyz_VjePUZf=xu-h8ttnfrh370vCWuVE1MUu7pVWa4A@mail.gmail.com' \
    --to=mikachu@gmail.com \
    --cc=anthony@bifb.org \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).