bash环境变量从数字开始

时间:2010-09-24 14:03:52

标签: bash shell cygwin

我想在bash中设置一个环境变量,它从一个数字开始。进程的环境可以包含这些变量(它只是不关心)。但是在shell中你必须创建变量,然后导出它们以便它们进入环境。有没有办法在不触及变量的情况下将一些值放入shell的环境中,或者创建一个以数字开头的变量?

4 个答案:

答案 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);