箭头键不在shell中工作

时间:2015-02-26 03:02:45

标签: shell terminal laravel-5

我开始使用Laravel 5项目并尝试使用' php artisan tinker'进行一些实验。 (psy shell),但我遇到了一些奇怪的事。在tinker / psy shell中,按任意箭头键将字符文字打印到屏幕而不是执行预期的行为(左右移动字符,上下循环最近的命令)。

向上输出^[[A。 向下输出^[[B。 正在输出^[[C。 左输出^[[D

这可能是我的终端问题,而不是Laravel错误。运行php -a时,我遇到了同样的错误行为。

我在OSX上运行终端,使用xterm仿真。

5 个答案:

答案 0 :(得分:25)

PHP REPL没有实现readline的行编辑和历史记录功能。我不知道是否有实现它的PHP模块,但您可以这样做:

rlwrap php artisan tinker

您可能必须为您的操作系统安装rlwrap。

答案 1 :(得分:3)

这是因为PHP没有使用readline支持构建。您可以在使用--with-readline参数编译和构建PHP时启用此功能。

http://php.net/manual/en/features.commandline.interactive.php

答案 2 :(得分:1)

我认为您的帐户是使用/bin/sh代替/bin/bash

创建的

在这种情况下,您需要更改登录shell。请按照以下步骤解决您的问题。

  1. sudo chsh -s /bin/bash <username>
  2. 退出并重新登录。

答案 3 :(得分:0)

就我而言,我需要安装php7-readline

sudo zypper in php7-readline                                                       
[sudo] password for root: 
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  php7-readline

1 new package to install.
Overall download size: 64.0 KiB. Already cached: 0 B. After the operation, additional 30.9 KiB will be used.
Continue? [y/n/...? shows all options] (y): 
Retrieving package php7-readline-7.2.1-1.1.x86_64                                                                 (1/1),  64.0 KiB ( 30.9 KiB unpacked)
Retrieving: php7-readline-7.2.1-1.1.x86_64.rpm ......................................................................................[done (8.4 KiB/s)]
Checking for file conflicts: ....................................................................................................................[done]
(1/1) Installing: php7-readline-7.2.1-1.1.x86_64 ................................................................................................[done]

答案 4 :(得分:0)

我的操作系统:centos 我通过:

解决了问题
sudo yum install rlwrap
alias tinker='rlwrap php artisan tinker'