Сообщение Re[3]: Вызов "себя" из скрипта от 26.05.2015 9:55
Изменено 26.05.2015 10:00 v_andal
Здравствуйте, kaa.python, Вы писали:
_>>и всех делов. Какие здесь возникают грабли? Может нужно уточнить, что подразумевается под "вызвать самого себя"?
KP>самого себя значит скрипт определили что ему нужно выполняться в другом окружении, а для этого необходимо вызвать scl. Если бы речь шла о консоли, то все выглядело бы так:
KP>
На сколько я понимаю, здесь уже вызов происходит интерактивным образом, то есть scl запускает bash, а уже внутри bash даётся команда на выполнение скрипта. Изнутри скрипта такую "интерактивность" уже не сделаешь. То есть внутри скрипта нужно делать
_>>и всех делов. Какие здесь возникают грабли? Может нужно уточнить, что подразумевается под "вызвать самого себя"?
KP>самого себя значит скрипт определили что ему нужно выполняться в другом окружении, а для этого необходимо вызвать scl. Если бы речь шла о консоли, то все выглядело бы так:
KP>
KP>scl enable devtoolset-2 'bash'
KP>./foo.sh arg1 arg2 # <- тут у нас уже новая сессия
KP>
На сколько я понимаю, здесь уже вызов происходит интерактивным образом, то есть scl запускает bash, а уже внутри bash даётся команда на выполнение скрипта. Изнутри скрипта такую "интерактивность" уже не сделаешь. То есть внутри скрипта нужно делать
scl enable devtoolset-2 './foo.sh arg1 arg2'
Если так не срабатывает, то значит что-то не так с окружением. Либо текущая директория не содержит foo.sh, либо что-то мешает его выполнению, либо scl что-то не устраивает. Возможно проблема с передачей аргументов. В идеале нужно перехватывать stderr и смотреть, какие ошибки вылазят. Вопрос только, позволяет ли scl перехватывать ошибки выполняемой команды, или же они просто сливаются в /dev/null.Re[3]: Вызов "себя" из скрипта
Здравствуйте, kaa.python, Вы писали:
_>>и всех делов. Какие здесь возникают грабли? Может нужно уточнить, что подразумевается под "вызвать самого себя"?
KP>самого себя значит скрипт определили что ему нужно выполняться в другом окружении, а для этого необходимо вызвать scl. Если бы речь шла о консоли, то все выглядело бы так:
KP>
На сколько я понимаю, здесь уже вызов происходит интерактивным образом, то есть scl запускает bash, а уже внутри bash даётся команда на выполнение скрипта. Изнутри скрипта такую "интерактивность" уже не сделаешь. То есть внутри скрипта нужно делать
Update. Хотя вижу, что люди знающие scl уже предложили решение
_>>и всех делов. Какие здесь возникают грабли? Может нужно уточнить, что подразумевается под "вызвать самого себя"?
KP>самого себя значит скрипт определили что ему нужно выполняться в другом окружении, а для этого необходимо вызвать scl. Если бы речь шла о консоли, то все выглядело бы так:
KP>
KP>scl enable devtoolset-2 'bash'
KP>./foo.sh arg1 arg2 # <- тут у нас уже новая сессия
KP>
На сколько я понимаю, здесь уже вызов происходит интерактивным образом, то есть scl запускает bash, а уже внутри bash даётся команда на выполнение скрипта. Изнутри скрипта такую "интерактивность" уже не сделаешь. То есть внутри скрипта нужно делать
scl enable devtoolset-2 './foo.sh arg1 arg2'
Если так не срабатывает, то значит что-то не так с окружением. Либо текущая директория не содержит foo.sh, либо что-то мешает его выполнению, либо scl что-то не устраивает. Возможно проблема с передачей аргументов. В идеале нужно перехватывать stderr и смотреть, какие ошибки вылазят. Вопрос только, позволяет ли scl перехватывать ошибки выполняемой команды, или же они просто сливаются в /dev/null.Update. Хотя вижу, что люди знающие scl уже предложили решение