用PHP模拟'cd'命令
我正在使用composer软件包为工作制作CLI工具。(很像) 此工具的目标是改进我的同事的日常工作流程 我的用PHP模拟'cd'命令,php,symfony,cd,Php,Symfony,Cd,我正在使用composer软件包为工作制作CLI工具。(很像) 此工具的目标是改进我的同事的日常工作流程 我的[COMPANY]install命令将安装当前工作目录中的所有活动存储库。我将此目录保存在主目录的配置文件中 现在我想添加一个[COMPANY]cd命令,通过将终端的当前目录更改为安装目录来模拟实际的cd命令。到目前为止,我已经尝试了以下方法: 我已经尝试过的 protected function handle(): void { $config = new Config;
[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中可能吗?如果是的话,我如何才能做到这一点
提前感谢。不,您不能通过在终端中运行脚本来更改其工作目录
cd
是内置在shell中的命令,而不是外部命令,例如/bin
否,您不能通过在其中运行脚本来更改终端的工作目录
cd
是内置在shell中的命令,而不是外部命令,例如/bin
这是否有帮助?不,shell_exec也会启动一个单独的进程。我想把什么东西挂在终端上。我将在我的帖子中添加shell\u exec
。怎么样exec('cd~/Development/Company&&Company install&&cd~')
?我不想在cd之后安装。我想将用户导航到工作目录,只是为了理解,您想在终端中运行PHP脚本,当它完成后,您应该在另一个文件夹中,因为PHP已经重定向了您?这会有帮助吗?不,shell_exec也会启动一个单独的进程。我想把什么东西挂在终端上。我将在我的帖子中添加shell\u exec
。怎么样exec('cd~/Development/Company&&Company install&&cd~')
?我不想在cd之后安装。我想将用户导航到工作目录,只是为了理解,您想在终端中运行PHP脚本,当它完成后,您应该在另一个文件夹中,因为PHP已经重定向了您?您有源代码吗?还是这是常识?实际的cd
命令是如何执行的?或者这是一个受操作系统保护的命令?您有源代码吗?还是这是常识?实际的cd
命令是如何执行的?或者这是一个受操作系统保护的命令?