zsh-users
 help / color / mirror / code / Atom feed
From: Philippe Troin <phil@fifi.org>
To: Meino Christian Cramer <Meino.Cramer@gmx.de>
Cc: zsh-users@sunsite.dk
Subject: Re: Command != command ???
Date: 24 Jul 2005 21:14:46 -0700	[thread overview]
Message-ID: <87ll3vmsi1.fsf@ceramic.fifi.org> (raw)
In-Reply-To: <20050725.054514.63127481.Meino.Cramer@gmx.de>

Meino Christian Cramer <Meino.Cramer@gmx.de> writes:

> I am a little confused here -- seems that what I believed to know
> previously is wrong...
> 
> ...I am booting my linux box directly into an X-Server with a kdm
> login...The shell I start then is...interactively, right? .zshrc
> setopts my extendedglob...then I start a script from there...which
> again is not interactively...and will "loose" some features I set in
> my .zshrc...
> 
> Is this correct?

No, when you start a zsh script (A) from a zsh "interactive session"
shell (B), A starts completely anew.  The only thing inherited from B
by A are the environment variables and some other irrelevant state
(opened file descriptors, limits, etc).  All the rest (options, etc)
is lost.

> Is there a list where I can identify those features, which are not
> valid for scripts, if set in .zshrc? Or do I have to read through the
> whole zshall manpage?

In a nutshell:

  zshenv is always read in all non-pathological cases

  zprofile is read if your shell is a login shell

  zshrc is read if your shell is interactive

  zlogin is read if your shell is a login shell

So zprofile and zlogin are equivalent except for the sourcing order
(if one is read, the other is read too).

We have four combinations:

  login and interactive: this is the case when logging in through
  telnet, ssh, and sometimes for shells started by X terminal
  emulators (depending on your settings);

  login and non-interactive: I've only seen it used by some display
  managers when you login (most recent gdm/kdm versions do that, as
  well as CDE);

  non-login interactive: eg. a sub-shell, opened by zsh itself or from
  vi, screen, etc;

  non-login and non-interactive: scripts.

I myself use .zshenv, .zprofile and .zshrc this way:

  In .zshenv, I put: 

      environment variables definitions: bracketed by an if statement,
      and only executed if SOME_VARIABLE is unset.  SOME_VARIABLE is
      set at the end of zshenv);

      some kind of aliases or autoloads: For example ll='ls -l',
      because I want to use ll like this some times: 'ssh machine ll
      /some/dir';

      all the options that are not relevant to interactive use but
      which I may use via 'ssh machine command' (eg. rc_quotes,
      magicequalsubst, etc).

  In .zprofile, I do once-a-time initialization (eg. run under
  ssh-agent if not already), terminal initialization, limits settings,
  everything that's inherited from process to sub-process.

  Finally .zshrc takes care of: completions, zle and keyboard
  settings, prompts, and interactive setopts and autoloads.

Phil.


  reply	other threads:[~2005-07-25  4:15 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-24  5:42 Meino Christian Cramer
2005-07-24 22:12 ` Philippe Troin
2005-07-24 23:22   ` Bart Schaefer
2005-07-25  3:06   ` Meino Christian Cramer
2005-07-25  3:32     ` Philippe Troin
2005-07-25  3:45       ` Meino Christian Cramer
2005-07-25  4:14         ` Philippe Troin [this message]
2005-07-25 16:06           ` Meino Christian Cramer
2005-07-25  3:54       ` Bart Schaefer
2005-07-25  4:15         ` Philippe Troin
2005-07-25 18:00   ` Meino Christian Cramer
2005-07-25 18:24     ` Philippe Troin
2005-07-25 18:53       ` Meino Christian Cramer
2005-07-25 19:20         ` Philippe Troin
2005-07-25 19:35           ` Meino Christian Cramer
2005-07-25 22:37             ` Philippe Troin
2005-07-26  0:33               ` Meino Christian Cramer
2005-07-26  2:21                 ` Philippe Troin
2005-07-26  4:20                 ` Sami Samhuri
2005-07-27 18:25                   ` Meino Christian Cramer
2005-07-26  5:07                 ` Bart Schaefer
2005-07-27  2:50                   ` Meino Christian Cramer
2005-07-26 10:28                 ` Peter Stephenson

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=87ll3vmsi1.fsf@ceramic.fifi.org \
    --to=phil@fifi.org \
    --cc=Meino.Cramer@gmx.de \
    --cc=zsh-users@sunsite.dk \
    /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).