From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11175 invoked by alias); 3 Dec 2015 16:12:56 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 37293 Received: (qmail 19020 invoked from network); 3 Dec 2015 16:12:55 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:mail-followup-to:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=gcoMOdWOPl55SJWqICM3U/Jhfl8iXSFZiQhpTtXpTvk=; b=WQxws9yn6QGFI2U/7zafnLP7KxbywhrLh3xeZyjydl7EB8k5OM/GQsrPLrMURUXib2 W2G75ogYpsFjYFeEDLHaTa2OJOONWlPmGuAiff94phd7T827m7h+TapFxvL+4PppDx0w nvqy4Tt/wdDCBlkqhe4zJsKL0elJS4uZj2eDhQcUp+jDQWKQI1sf9s7780WHNOBolZrR crSaD2a7t41pgzHfZm7OkfQTNT6uJXOOfTMPvKM6i9RfdusWhtZFJUxRMaGtbBnjXf03 Gq5of8N6IrfL9/KP3JmgoVFsOrMVD3aHi9RxFZmNxAmsPnYkril7VhRAgH3lONutyDgQ UwWA== X-Received: by 10.28.47.212 with SMTP id v203mr11980890wmv.37.1449150571619; Thu, 03 Dec 2015 05:49:31 -0800 (PST) Date: Thu, 3 Dec 2015 13:49:29 +0000 From: Stephane Chazelas To: zsh-workers@zsh.org Subject: Re: a way to get the value of the -c option Message-ID: <20151203134929.GA9581@chaz.gmail.com> Mail-Followup-To: zsh-workers@zsh.org References: <20151203115449.GA19846@zira.vinc17.org> <20151203124554.3b93281f@pwslap01u.europe.root.pri> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151203124554.3b93281f@pwslap01u.europe.root.pri> User-Agent: Mutt/1.5.21 (2010-09-15) 2015-12-03 12:45:54 +0000, Peter Stephenson: > On Thu, 3 Dec 2015 12:54:49 +0100 > Vincent Lefevre wrote: > > zsh should provide a way to get the value of the -c option. Under > > Linux, one can look at /proc/$$/cmdline, but I think that it would > > be better to get this information in an OS-independent way. [...] > +vindex(ZSH_CMD_ARG) > +item(tt(ZSH_CMD_ARG))( > +If the shell was started with the option tt(-c), this contains > +the argument passed to the option. Otherwise it is not set. [...] Note that bash calls it $BASH_EXECUTION_STRING It could be useful to have zsh's equivalent being $ZSH_EXECUTION_STRING. Note that bash doesn't clear it from the environment and doesn't unexport it: $ echo set | env BASH_EXECUTION_STRING=zzz bash -s | grep zzz BASH_EXECUTION_STRING=zzz $ BASH_EXECUTION_STRING=zzz bash -c 'echo $BASH_EXECUTION_STRING; echo set | bash' | grep EXE echo $BASH_EXECUTION_STRING; echo set | bash BASH_EXECUTION_STRING='echo $BASH_EXECUTION_STRING; echo set | bash' Now, if *you* export it to the environment, you're the one to blame. In the case of bash, it's also affected by the -a option: $ bash -ac env | grep BASH BASH=/bin/bash BASH_EXECUTION_STRING=env BASH_VERSION=4.3.11(1)-release env -i zsh -ac env shows a lot of variables as well. The intent with "-a" is that all *newly-declared* (after "set -a" is issued) variables are automatically exported. It's arguable whether those internal variables should also be exported or not when the shell is called with -a. mksh bash zsh export them, dash ksh93 yash don't. Cheers, -- Stephane