繁体   English   中英

如何在system()中退出Shell模式

[英]How to exit shell mode in system()

我有一个php脚本,应该使用一些预设的系统别名。 即“别名ll = ls -l”

在终端“ ll”工作,但从php system(“ ll”)输出

sh: ll: command not found

如何退出“ sh”并执行终端命令?

PS:可能是我误解了基本的Linux组件shell和bash。 在这种情况下,请纠正我/该帖子

PHP文档尚不清楚,但是大概PHP的systemStandard C的system(3)的反映,该system(3) 将参数命令交给命令解释器sh(1) 如果要避免使用shell,则除了system之外,还需要使用PHP的其他功能(例如显式fork / exec)。 那是上下文,但这不会帮助您解决问题。

在您的情况下,您似乎只想在rcfile中使用别名。 除非您采取非常规步骤来实现该目标,否则system调用所调用的脚本将不会读取rcfile,即使您这样做,维护程序员也不会明白。 我强烈建议您将别名放在脚本或命令参数本身中,或者直接显式调用命令( ls -al )。

您还可以从脚本手动获取rcfile,或调用system(csh -i 'yourcommands')强制将csh作为交互式shell调用(这将导致读取rcfile)。 我认为这是一个坏主意,因为它有效地迫使外壳的行为与其环境不一致,但是为了完整起见,在此将其包括在内。

上面的大多数内容都是通过快速阅读Mac(Mavericks)上csh手册的“ 启动和关闭”部分获得的。 我也没有提出其他可能的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM