[英]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的system
是Standard 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.