我有一个PHP脚本应该使用一些预设的系统别名。即"别名ll = ls -l"
在终端" ll"但是可以从php系统(" ll")输出
sh: ll: command not found
如何退出" sh"并执行我的终端命令?
P.S。:可能是我误解了基本的linux组件shell和bash。在这种情况下,请更正我/帖子
答案 0 :(得分:1)
PHP docs对此并不清楚,但可能PHP system
反映了Standard C's system(3)
,将参数命令交给命令解释器sh(1) 。如果你想避免shell,除了system
之外你还需要使用PHP的另一个特性(比如显式的fork / exec)。这是背景,但它无助于您解决问题。
在你的情况下,你似乎只想在rcfile中使用别名。由system
调用调用的脚本不会读取你的rcfile,除非你采取非常的步骤来实现这一点,即使你这样做,对维护程序员来说也是不明显的。我强烈建议您将别名放在脚本或命令参数中,或者只是显式调用命令(ls -al
)。
您也可以手动从脚本中获取rcfile,或者调用system(csh -i 'yourcommands')
强制csh
作为交互式shell调用(这会导致您的rcfile被读取)。我认为这是一个坏主意,因为它有效地迫使shell表现出与其环境不一致的行为,但为了完整性,我将其包括在内。
上面的大部分内容都是通过我的Mac(Mavericks)上csh手册的启动和关闭部分快速阅读的。还有其他潜在的解决方案,我还没有提出。