Как правило, один процесс не может изменить текущий каталог другого процесса (это верно как для систем Windows, так и для систем Unix). Поэтому программа, которая запускается как отдельный процесс вне оболочки, не может изменить текущий каталог оболочки.
Скорее всего, вам придется использовать некоторую комбинацию командных файлов и / или сценариев оболочки для выполнения того, что вы хотите сделать. Обратите внимание, что хотя пакетные файлы Windows могут изменять текущий каталог оболочки, в которой они выполняются, это не верно для сценариев оболочки в Unix. В случае Unix вы, вероятно, захотите использовать shell functions , которые выполняются в одном и том же процессе. Обратите внимание, что написание функций оболочки зависит от оболочки, поэтому вам придется портировать вашу программу на каждую оболочку Unix, которую вы также хотите поддерживать.
В некоторых оболочках Unix вы можете запустить скрипт оболочки в контексте текущей оболочки, используя команду .
. Если ваша оболочка поддерживает это, вы можете использовать псевдоним оболочки для его запуска, чтобы вам не приходилось вводить .
перед вашей командой.