symfony — имитация команды `cd` с переполнением стека

Я делаю CLI-инструмент для работы с использованием symfony/console композиторский пакет. (Так же, как laravel/installer)

Цель этого инструмента — улучшить ежедневный рабочий процесс для моих коллег.

мой [COMPANY] install Команда устанавливает все активные репозитории в текущем рабочем каталоге. Я сохраняю этот каталог в файле конфигурации в домашнем каталоге.

Теперь я хочу добавить [COMPANY] cd команда, которая должна имитировать фактическую cd команда, изменив текущий каталог моего терминала на каталог установки. До сих пор я пробовал следующее:

Что я уже пробовал

protected function handle(): void
{
$config = new Config;
$path = $config->get('directory');

if (is_null($path)) {
$this->error("It seems like you didn't install the [COMPANY] projects. Take a look at the `[COMPANY] install` command.");
exit;
}

// These options do not work because they are executed in an isolated sub-process.
chdir($path);
exec("cd $path");
shell_exec("cd $path");

$this->info("Changed working directory to $path");
}

chdir() Метод изменяет только рабочий каталог текущего php-скрипта. В то время как exec() начинает полностью изолированный процесс.

Желаемое поведение

~                     cd ~/Development/Company
~/Development/Company company install
~/Development/Company cd ~
~                     company cd
~/Development/Company

Мой вопрос: возможно ли такое поведение с PHP? И если так, как я могу достичь этого.

Заранее спасибо.

0

Решение

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

cd это команда, встроенная в вашу оболочку, а не внешняя команда, например, /bin,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]