大佬教程收集整理的这篇文章主要介绍了ShellScript 不运行 'cd',在 php 中调用 sh,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
看看有没有人去过,我在s@R_197_11423@lscript中有这个简单的代码,我访问文件夹(/home/teste4toquew5824)然后确认我是否用密码进入目录,
#!/bin/bash
cd /home/teste4toquew5824 && pwd
我有一个 php 文件(位于 /var/www/HTML 中),它调用了这个 sh:
$var= s@R_197_11423@l_exec('/usr/local/bin/API/teste.sh');
echo "<br><br>";
var_dump($var);
当我收到 pwd 的返回时,它显示好像它仍然在 php 文件的目录中(/var/www/HTML),换句话说,它没有“接受”或执行 cd 命令。
1 - 我已经为 php 和 sh 申请了权限。
2 - 我已经确认目录 /home/teste4toquew5824 存在
3 - 我已经测试并在 sh 中放置了一个回声,只是为了确认 php 正在正确调用和执行 sh。
4 - 我已经在 sh 中添加了一行来复制文件,只是为了确保另一个命令也正在执行,并将文件复制到 /var/www/HTML
5 - 我尝试将顶部的 bash 更改为 #!/bin/sh -
有人有什么想法吗?非常感谢
你需要知道当前工作目录是每个进程的一个属性。为此,cd
命令是 s@R_197_11423@l 内部的命令,s@R_197_11423@l 通过调用 chdir(2)
系统调用来执行该命令。
这意味着s@R_197_11423@l可以改变它的目录,然后fork几个进程,这将继承父级(s@R_197_11423@l)的工作目录,但是s@R_197_11423@l无法改变进程的目录那叫它。这就是你调用改变目录的脚本(一个s@R_197_11423@l进程),调用pwd
的原因,表明目录实际上是你请求的目录,但你自己的目录仍然和以前一样,好像s@R_197_11423@l 忽略了你的命令。
在posix系统中没有系统调用来改变另一个进程的当前目录,而是由进程自己完成。
混淆是因为 cd
命令看起来像@H_616_47@在不同程序中实现的其他命令,但 cd
命令是一个内部命令(您在任何地方都看不到 /bin/cd
命令)
以上是大佬教程为你收集整理的ShellScript 不运行 'cd',在 php 中调用 sh全部内容,希望文章能够帮你解决ShellScript 不运行 'cd',在 php 中调用 sh所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。