переменные окружения bash, начинающиеся с цифры - PullRequest
3 голосов
/ 24 сентября 2010

Я хочу установить переменную окружения в bash, которая начинается с цифры.Среда процесса может содержать такие переменные (это просто не важно).Но в оболочке вы должны создать переменные, а затем экспортировать их, чтобы они перешли в среду.Есть ли способ поместить какое-то значение в среду оболочки, не касаясь переменных, или, возможно, создать переменную, которая начинается с цифры?

Ответы [ 4 ]

4 голосов
/ 24 сентября 2010

Единственный способ, которым я мог придумать, - это запустить новую оболочку, используя env:

env 0FOO=BAR /usr/bin/bash

Я попробовал это в Cygwin, и, похоже, это сработало.

2 голосов
/ 24 сентября 2010

Единственными допустимыми типами начальных символов для переменных bash являются буквы и подчеркивания.

0 голосов
/ 24 сентября 2010

Требуемая обработка является трудоемкой и утомительной и не слишком чувствительной, но (в общих чертах, проверки ошибок на 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);
0 голосов
/ 24 сентября 2010

Почему вы хотите это сделать?Вы можете сделать:

export _1="some value"

или

export a1="some value"

Причина, по которой вы не можете сделать то, что вы просите, состоит в том, что переменная типа "$ 1" будет перепутана с позиционнойпараметр $1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...