Я почти уверен, что system () или backticks будут создавать новую дочернюю оболочку, а не вызывать оболочку, которая запустила скрипт Perl.
аюсь написать сценарий оболочки, который при запуске установит некоторые переменные окружения, которые останутся установленными в оболочке вызывающего.
setenv FOO foo
в csh / tcsh или
export FOO=foo
в sh / bash устанавливайте его только во время выполнения скрипта.
я уже знаю, что
source myscript
будет запускать команды сценария, а не запускать новую оболочку, что может привести к настройке среды «вызывающего».
Но вот беда:
Я хочу, чтобы этот скрипт вызывался из bash или csh. Другими словами, я хочу, чтобы пользователи любой оболочки могли запускать мой сценарий и изменять среду своей оболочки. Таким образом, «source» не будет работать для меня, так как пользователь, запускающий csh, не может создать скрипт bash, а пользователь, запускающий bash, не может создать скрипт csh.
Есть ли какое-то разумное решение, которое не предполагает написания и поддержки ДВУХ версий скрипта?