Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: a way to get the value of the -c option



On Thu, 3 Dec 2015 12:54:49 +0100
Vincent Lefevre <vincent@xxxxxxxxxx> 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.

This would be easy to do like this, for example, which has the
benefit of being trivial.

It's already possible to detect the shell was started like this
with zsh_eval_context[1], so another possibility might be to
combine it with a more generic way of getting top-level values.

pws

diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo
index 21bb874..8ef5485 100644
--- a/Doc/Zsh/params.yo
+++ b/Doc/Zsh/params.yo
@@ -933,6 +933,11 @@ tt(zsh/zutil) module.
 )
 enditem()
 )
+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.
+)
 vindex(ZSH_NAME)
 item(tt(ZSH_NAME))(
 Expands to the basename of the command used to invoke this instance
diff --git a/Src/init.c b/Src/init.c
index dcce1d7..25c39b5 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -1280,6 +1280,7 @@ init_misc(void)
 	    fclose(bshin);
 	SHIN = movefd(open("/dev/null", O_RDONLY | O_NOCTTY));
 	bshin = fdopen(SHIN, "r");
+	setsparam("ZSH_CMD_ARG", ztrdup(cmd));
 	execstring(cmd, 0, 1, "cmdarg");
 	stopmsg = 1;
 	zexit(lastval, 0);



Messages sorted by: Reverse Date, Date, Thread, Author