在具有bash版本“3.2.51(1)-release”(操作系统:SUSE Linux Enterprise Server 11.1(x86_64))的远程计算机上,我无法使用变量名执行常规选项卡。例如,我想键入:
echo $OLDPWD/
然后在斜杠的末尾,我可以点击“Tab”,变量名称将扩展为旧的目录名称(在最后一个cd
或pushd
命令之前)。这适用于我自己的笔记本电脑(Debian 7,Bash 4.2.37(1)-release)。为什么在这个SLES bash shell中它不起作用?
同样,如果我输入
echo $OLDP
然后在“P”的末尾点击“Tab”,bash会完成它$OLDPWD
。这也不会发生在SLES 11 bash中。
哪些控制变量(shopt?set?)会影响这种行为?
Alt + $有用吗?
—
娴静
可能旧的bash版本没有包含所有花哨的完成功能。你可以
—
格伦杰克曼2013年
bash-completion
在远程机器上安装包吗?
@glennjackman:该
—
garyjohn 2013年
bash-completion
包提供了一组围绕许多命令的包装器,这些命令可以自定义这些命令的参数完成行为。它不会影响环境变量的完成。该功能内置于更高版本的bash中。
是否已设置$ OLDPWD?在我的bash 4.2.25中,直到你
—
游荡逻辑
cd
至少使用过一次才定义它。我不知道当你做cd时bash 3.x是否设置了$ OLDPWD。例如,$ HOM <tab>的完成是否完成到$ HOME?
顺便说一句,我刚刚在csh中找到,如果我设置
—
Chan Kim
set zzz='~/some/dir'
,我不能做tab扩展,cp $zzz +tab
但如果我定义set zzz=~/some/dir
,我可以做扩展。看起来shell在引号中的字符串后无法展开。