Завершение Bash в функции?

#bash #function #bash-completion #pathname

Вопрос:

В настоящее время у меня есть следующая функция Bash:

 function xcd {
        if [ "$#" -gt 1 ]; then
                echo "Usage: xcd [<path>]" >amp;2
                return 1
        fi

        cd "/some/commonly/used/path/${1}"
}
 

Я бы хотел , чтобы это поддерживало завершение Bash — когда я печатаю xcd foo , я бы хотел, чтобы оно завершалось так, как если бы я печатал cd /some/commonly/used/path/foo . Есть ли какой — нибудь способ заставить Bash быть умным в этом отношении — предположительно, наблюдая за тем, как ${1} используется, — не просто написав завершение Bash вручную?

Ответ №1:

Замените свою функцию в вашем ~/.bashrc на эту:

 CDPATH="/some/commonly/used/path"
 

Я предполагаю, что CDPATH до сих пор не используется. Источник ваш ~/.bashrc , а затем вы можете использовать cd foo с
завершением bash.