我有一个应用程序(不是我自己的),在两台具有 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
,所以也检查一下。