перейдите к пути, содержащему пробелы, хранящиеся в переменной в Bash в macOS - PullRequest
0 голосов
/ 25 февраля 2019

У меня

x="/dir 1"
y=/dir\ 2

Когда я делаю cd $x или cd $y, я получаю ошибку.Я не хочу делать cd "$x", потому что

  1. Я не знаю, какие переменные содержат путь с пробелами
  2. Это неудобно

Любое решение?

1 Ответ

0 голосов
/ 25 февраля 2019

Существует опция оболочки , которая указывает Bash проверить, является ли аргумент cd переменной, содержащей путь:

shopt -s cdable_vars
y='/dir 2'
cd y

, где cd y эквивалентноcd "$y".

Из руководства:

cdable_vars
Если это установлено, предполагается, что аргумент встроенной команды cd не является каталогомбыть именем переменной, значением которой является каталог для изменения.


Последние версии bash-complete проверяют, установлена ​​ли опция оболочки, и предлагаютполные имена переменных для cd, но для того, чтобы это работало, перед загрузкой завершения должна быть установлена ​​опция оболочки.

По умолчанию для cd установлено значение

complete -F _cd -o nospace cd pushd

Чтобы добавить к этому завершение переменной, оно должно быть изменено на

complete -v -F _cd -o nospace cd pushd
...