Получение "Ошибка при инициализации виртуальной машины"

У меня есть устаревший скрипт оболочки, который вызывается планировщиком заданий Autosys. В скрипте они вызывают файл jar

res="'$JAVA_HOME/bin/java ....'"
echo >$res<

и я получаю следующую ошибку.

Error occurred during initialization of VM 
    java.lang.Error: Properties init: Could not determine current working directory.

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

echo "PWD:" "$PWD"    # Nothing gets printed.
echo "USER:" "$USER"  # User id is getting printed

if [ -d "/export/home/abc/" ]; then
    echo "Directory present"    # gets printed
    echo 'ls -ltr'              # total 3 gets printed
    echo 'cd /export/abc/def'
    echo 'pwd'                  # nothing gets printed
fi

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

Также обратите внимание, что этот скрипт вызывается другим скриптом, который стажер вызывает планировщик заданий Autosys.

Ответы

Ответ 1

Спасибо Андрею за подсказку.

Как сказано в сообщении, это был устаревший скрипт, и в каждом из скриптов были тысячи строк, которые сделали наш анализ сложным. Но, наконец, выяснилось, что процесс, в котором мы получаем ошибку, запускается другим пользователем. У этого пользователя не было разрешения на доступ к родительской папке, и, следовательно, мы получали

Could not determine current working directory.

Я дал разрешение на родительскую папку этому пользователю, и он сработал. Всем спасибо...

Ответ 2

Это ожидаемое поведение.

Скрипт запускается в подоболочке и не может изменять рабочий каталог родительской оболочки. Его эффекты теряются, когда они заканчиваются.

SO Ссылка для обходного пути.