我想在bash中设置一个环境变量,它从一个数字开始。进程的环境可以包含这些变量(它只是不关心)。但是在shell中你必须创建变量,然后导出它们以便它们进入环境。有没有办法在不触及变量的情况下将一些值放入shell的环境中,或者创建一个以数字开头的变量?
答案 0 :(得分:4)
我能想到的唯一方法是使用env
启动一个新shell:
env 0FOO=BAR /usr/bin/bash
我在Cygwin下尝试了这个,但似乎有效。
答案 1 :(得分:2)
bash变量唯一有效的开头字符类型是字母和下划线。
答案 2 :(得分:0)
你为什么要这样做?你可以这样做:
export _1="some value"
或
export a1="some value"
你不能做你所要求的原因是像“$ 1”这样的变量会与位置参数$1
混淆。
答案 3 :(得分:0)
所需的处理过程繁琐乏味且不太合理,但(概括地说,malloc()
上的错误检查已被省略):
char **env = environ;
while (*env != 0)
*env++;
char **newenv = malloc((env - environ + 1) * sizeof(*newenv));
memcpy(newenv, environ, (env - environ) * sizeof(char *));
newenv[env - environ] = "386=pygmalion";
newenv[env - environ + 1] = 0;
char *args[] = { "modded-env-bash", 0 };
execve("/bin/bash", args, newenv);
exit(1);