Я почти уверен, что system () или backticks будут создавать новую дочернюю оболочку, а не вызывать оболочку, которая запустила скрипт Perl.

аюсь написать сценарий оболочки, который при запуске установит некоторые переменные окружения, которые останутся установленными в оболочке вызывающего.

setenv FOO foo

в csh / tcsh или

export FOO=foo

в sh / bash устанавливайте его только во время выполнения скрипта.

я уже знаю, что

source myscript

будет запускать команды сценария, а не запускать новую оболочку, что может привести к настройке среды «вызывающего».

Но вот беда:

Я хочу, чтобы этот скрипт вызывался из bash или csh. Другими словами, я хочу, чтобы пользователи любой оболочки могли запускать мой сценарий и изменять среду своей оболочки. Таким образом, «source» не будет работать для меня, так как пользователь, запускающий csh, не может создать скрипт bash, а пользователь, запускающий bash, не может создать скрипт csh.

Есть ли какое-то разумное решение, которое не предполагает написания и поддержки ДВУХ версий скрипта?

Ответы на вопрос(1)

Ваш ответ на вопрос