将目录分配给源文件中的变量

时间:2014-09-08 18:05:04

标签: linux bash variables directory tab-completion

我正在构建一个带有可执行文件别名的源文件(这些工作正常)并将目录分配给变量,以便更快地到达目录,减少输入。例如,如果我源example.source:

#!/usr/bin/bash
mydir="/path/to/some/dir"

我可以使用

到达/path/to/some/dir
cd $mydir

但是,我无法使用tab complete来浏览其他子目录,就像输入完整路径一样。我的意思是,如果我使用tab键来完成变量我得到cd $mydir但不是cd $mydir/(我必须删除最后一个空格字符并手动键入斜杠/以查看下一个子目录) 。希望这是一个可以理解的问题。有没有解决方法呢?

编辑:我正在使用的Linux发行版是Slackware Linux 3.2.31.c x86_64 GenuineIntel GNU / Linux

EDIT2: GNU bash,版本4.2.37(2)-release

2 个答案:

答案 0 :(得分:1)

显然这个功能已经开始在bash 4.3,2014年2月26日09:25发布。

在bash 4.3中阅读NEWS文件我发现了这个:

  

我。单词完成代码检查文件名是否为   包含一个       shell变量扩展为目录名,并在单词后附加“/”       作为适当的。相同的代码扩展了命令名称中的shell变量       执行命令完成时。

不幸的是我无法重新安装bash(因为我在服务器上工作),但我希望这可以帮助其他人。

答案 1 :(得分:0)

如果我理解了您的问题,那么我相信可以通过将其放在example.source的顶部来解决。这将在您每次cd时列出您的内容。

    #!/usr/bin/bash

    # Make cd change directories and then list the contents
    function cd() {
        builtin cd $*;
        ls;
    }

    mydir="/path/to/some/dir"
    cd $mydir

我的另一个建议是尝试将cd放在你的别名中。像这样:

    mydir="cd /path/to/some/dir"
    $mydir