Пока человек за env
в Linux, похоже, указывает, что перед выполнением команды вы можете установить новые переменные среды. К сожалению, когда я устанавливаю новые переменные в shebang файла в системах Linux, файл никогда не выполняется.Установка переменной среды в/usr/bin/env зависает в Linux
#!/usr/bin/env VAR1=foo bash
echo $VAR1
Когда я запускаю этот файл на компьютере CentOS или Ubuntu, он просто сидит там.
$ ./shell-env.sh
<nothing happens>
Что я нахожу особенно странным является то, что это работает прекрасно на OS X с BSD env
.
$ ./shell-env.sh
foo
$
Является ли это просто разница между BSD env
и Linux env
? Почему страницы man для Linux, похоже, говорят, что они должны работать так же, как на BSD?
P.S. Моим вариантом использования является переопределение переменной PATH
, поэтому я могу попытаться найти ruby
в системе, но это не на PATH
.
Спасибо заранее!
Вы переопределяете 'PATH'? Если да, то ваш новый PATH включает 'bash'? –
Вы можете использовать 'env' для установки переменной перед выполнением команды _ из командной строки_, но не в shebang в Linux. – mwp
Этот Q ** может быть более уместным на S.E. сайт http://unix.stackexchange.com (Unix & Linux). Подумайте, используя ссылку 'flag' в нижней части вашего Q и попросите модератора переместить ее. Пожалуйста, не публикуйте те же Q на двух разных сайтах. Спасибо и удачи. – shellter