![是否有影响命令行完成的系统设置?](https://linux22.com/image/130408/%E6%98%AF%E5%90%A6%E6%9C%89%E5%BD%B1%E5%93%8D%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%AE%8C%E6%88%90%E7%9A%84%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
我有一个应用程序(不是我自己的),在两台具有 2.6.32-696 内核的不同 CentOS6 计算机上运行。该应用程序是命令行驱动的(启动后有自己的提示)数据分析和绘图例程。在一台机器上,命令行补全可以通过文件应用程序进行(即,如果我说“read bob”,它会列出当前目录中以“bob”开头的所有文件)。在另一台机器上,完成根本不起作用。我尝试了不同的 shell,并查看了环境变量,但无法识别任何内容来解释不同的行为。我是否可以在计算机之间查找或比较常规系统设置,以尝试解决这种不一致的行为?
针对评论的其他详细信息:
我尝试过的 shell:
在完成工作的机器上,它可以从 bash 运行(该机器上的默认设置),如果我切换到 tcsh,它也可以工作。
在完成失败的机器上,tcsh(该机器上的默认设置)和 bash 都会失败。
新信息:
我刚刚发现,在无法从应用程序 CLI 获取文件名补全的计算机上,如果我以 root 身份登录(不是 su 或 sudo,而是以 root 身份登录交互式控制台),我确实会得到补全。我猜这表明权限或环境问题,但我不知道要寻找什么......
答案1
设置 shell 选项 nullglob 会导致您的问题。从命令行中键入shopt nullglob
以查看该设置是打开还是关闭。要关闭它,请运行shopt -u nullglob
.
当我们这样做时, option 也是如此failglob
,所以也检查一下。