php - 用 PHP 模拟 `cd` 命令
问题描述
我正在使用symfony/console
composer 包制作一个用于工作的 CLI 工具。(很像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 脚本的工作目录。Whileexec()
启动一个完全隔离的进程。
期望的行为
~ cd ~/Development/Company
~/Development/Company company install
~/Development/Company cd ~
~ company cd
~/Development/Company
我的问题:这种行为甚至可以用 PHP 实现吗?如果是这样,我怎么能做到这一点。
提前致谢。
解决方案
不,您不能通过在其中运行脚本来更改终端的工作目录。
cd
是您的 shell 中内置的命令,而不是例如/bin
.
推荐阅读
- leaflet - 插件传单不会在地图上逐层搜索(传单-fusesearch)
- javascript - 将带有对象的数组传递给数据表
- laravel - 流明可报告和可渲染异常不起作用
- groovy - 如何在 groovy 中列出一组文件?
- php - 从 wordpress 中的 RSS 提要中删除一个类
- sql - SQL where 函数与 Over Partition 一起使用
- c++ - C++ | 模板和常量类型
- java - 我无法安装 Netbeans10
- css - 带有 CSS 变量的文本阴影
- visual-studio - Visual Studio 2019 中的 Xamarin Live Player