首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用cli脚本更改终端工作目录?

如何用cli脚本更改终端工作目录?
EN

Stack Overflow用户
提问于 2012-05-05 16:02:45
回答 3查看 2K关注 0票数 3

我想从cli脚本(而不是当前的工作目录)中更改Linux终端中的目录--希望使用shell_exec()。

例:从user@host:~$user@host:/the/other/directory$

不允许使用system()exec()

这在我的情况下行不通:

代码语言:javascript
复制
$dir = '/the/other/directory';
shell_exec('cd '.$dir);

也不是这些

代码语言:javascript
复制
shell_exec('cd '.escapeshellarg($dir));
shell_exec(escapeshellcmd('cd '.$dir));
pclose(popen('cd '.$dir));

但是shell_exec('ls '.$dir)给出了目录中的列表。有诡计吗?

EN

回答 3

Stack Overflow用户

发布于 2012-09-21 08:47:40

当您像正在执行的那样执行几个命令时:

代码语言:javascript
复制
shell_exec('cd '.escapeshellarg($dir));
shell_exec(escapeshellcmd('cd '.$dir));

恐怕行不通。第一个命令与第二个命令无关,因此不能使用第一个命令的结果来执行第二个命令。

如果要执行一系列命令,请使用管道符号|,如下所示:

代码语言:javascript
复制
echo shell_exec("ls /etc/apache2 | grep fileName");
票数 2
EN

Stack Overflow用户

发布于 2012-05-05 16:31:54

shell_exec所做的本地更改仅适用于该php进程,因此ls将从另一个目录中获取。但是,当您退出php时,您将返回到bash,它从来不关心进程做什么。

我怀疑您能否从外部更改bash的当前目录。如果您需要在其他目录中运行bash,您可以在php中尝试这样做:

代码语言:javascript
复制
system('gnome-terminal --working-directtory=/home/doom');

这将在新的dir中启动另一个终端,但是脚本会等到退出这个shell。

票数 0
EN

Stack Overflow用户

发布于 2012-05-05 16:33:24

如果您的意思是要通过调用php cli脚本来更改父shell的目录,那么您不能这样做。你最多能做的是:

代码语言:javascript
复制
shell> eval `your/cli/script`

在你的脚本中做一些类似的事情

代码语言:javascript
复制
<?php
...
    echo "cd $dir"

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10463559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档