всем привет, вопрос возник насчет переменного окружения
freebsdtest# uname -a
FreeBSD freebsdtest.pampampam.local 8.2-RELEASE FreeBSD 8.2-RELEASE #0:
для запуска одного скрипта в определенном режиме нужна переменная
TRATATA=1
хочу этот скрипт запускать из /usr/local/etc/rc.d/skript.sh , от имени левого пользователя skriptuser , и пользователю заместо стандартной оболочки прописать /sbin/nologinесли задавать переменную
set TRATATA=1
скрипт не видит
а если через
setenv TRATATA 1
то скрипт схватывает переменную и все ок, НО
после reboot этой переменной не сохраняется, мб я что нибудь не так делаю ?
естественно все под рутом.
и так же хотелось бы подробней разобраться откуда они берутся и как их можно изменить не только через setenv
> НО после reboot этой переменной не сохраняется, мб я что нибудь не так
> делаю ?И не должно и не будет сохраняться.
> и так же хотелось бы подробней разобраться откуда они берутся и как
> их можно изменить не только через setenvвыставляются скриптами через setenv
>> НО после reboot этой переменной не сохраняется, мб я что нибудь не так
>> делаю ?
> И не должно и не будет сохраняться.а почему так? =\
>>> НО после reboot этой переменной не сохраняется, мб я что нибудь не так
>>> делаю ?
>> И не должно и не будет сохраняться.
> а почему так? =\"если звезды загораются, значит это кому-нибудь нужно...?"
ну потому так, что все, кому что надо - пишут это в свои скрипты setenv, а если надо выставить на глобальном уровне, то пишут в конфиг файлы.
http://www.freebsd.org/doc/ru/books/handbook/shells.html
http://otvety.google.ru/otvety/thread?tid=175cce2a36087c08
>>> НО после reboot этой переменной не сохраняется, мб я что нибудь не так
>>> делаю ?
>> И не должно и не будет сохраняться.
> а почему так? =\Ну а почему IPшник, вручную назначенный через ifconfig, после ребута пропадает? Тут то же самое
> Ну а почему IPшник, вручную назначенный через ifconfig, после ребута пропадает? Тут
> то же самоеа ну да логично, спасибо
тогда вопрос такой, как добавить глобальную переменную
через /.cshrc не подходит т.к. входа в систему особо часто не предусматривается, а ребут возможен
через /etc/profile не работает
через тот же скрипт в /usr/local/etc/rc.d/skript.sh не работает т.к. на сколько я понял команда setenv встроенная в csh , как запустить команду из csh не загружая его не допер,
есть еще варианты?? уже дело дошло до правки самого скрипта=\
>если задавать переменную
>set TRATATA=1
>скрипт не видитЭто потому что set устанавливает переменные для sh, а не для [t]csh. Заменить вначале #!/bin/csh на #!/bin/sh (но возможно придется и скрипт переписывать) и будет скрипт "видеть" переменную через set
> тогда вопрос такой, как добавить глобальную переменную
> через /.cshrc не подходит т.к. входа в систему особо часто не предусматривается,
> а ребут возможен
> через /etc/profile не работает
> через тот же скрипт в /usr/local/etc/rc.d/skript.sh не работает т.к. на сколько
> я понял команда setenv встроенная в csh , как запустить команду
> из csh не загружая его не допер,Во-первых, есть файл /etc/csh.cshrc
А во-вторых, никогда не видели скрипты, у которых в начале определяются переменные, типа:
#!/bin/sh
ext_if="rl0"теперь "ifconfig $ext_if" это то же самое, что и "ifconfig rl0"
Может лучше так?
Сдаётся мне - неверно поставленная задача приводит к поискам решения класса "через ass автогеном".
> Сдаётся мне - неверно поставленная задача приводит к поискам решения класса "через
> ass автогеном".правильная задача звучит так, есть скрипт VNC Repeater на Perl, есть сервер на FreeBSD
надо заставить работать скрипт от пользователя Repeater в состоящего только в группе Repeater и имеющего default shell = nologin, запускающегося и работающего в фоновом режимеСкрипту нужно прописать две глобальных переменных это ULTRAVNC_REPEATER_LOOP=BG и ULTRAVNC_REPEATER_LOGFILE=/tmp/u.log
>> Сдаётся мне - неверно поставленная задача приводит к поискам решения класса "через
>> ass автогеном".
> правильная задача звучит так, есть скрипт VNC Repeater на Perl, есть сервер
> на FreeBSD
> надо заставить работать скрипт от пользователя Repeater в состоящего только в группе
> Repeater и имеющего default shell = nologin, запускающегося и работающего
> в фоновом режиме
> Скрипту нужно прописать две глобальных переменных это ULTRAVNC_REPEATER_LOOP=BG и ULTRAVNC_REPEATER_LOGFILE=/tmp/u.logпроблему решил, можно сделать финт ушами
через env передать определенные переменные, определенной программе
вот такenv ULTRAVNC_REPEATER_LOOP=BG ULTRAVNC_REPEATER_LOGFILE=/tmp/u.log /usr/local/bin/ultravnc_repeater.pl
и такой скрипт добавил