Строка, которую вы определяете в строке driver
- независимо от ее текста - передается в вашу оболочку, независимо от того, что такое (если система Unix-ish, вероятно, sh или bash), и она работает в вашу оболочку для обработки строки. Итак, первый трюк - это установить саму строку.
Здесь просто вставка пробелов работает нормально:
[merge "netbeans"]
driver = this has spaces
Мы можем проверить это с git config --get
:
$ git config --get merge.netbeans.driver
this has spaces
$ git config --get merge.netbeans.driver | hexdump -C
00000000 74 68 69 73 20 68 61 73 20 73 70 61 63 65 73 0a |this has spaces.|
00000010
Оболочка, однако, будет рассматривать это как три "слова"; мы хотим, чтобы три слова были одним словом в терминах оболочки. Здесь обратный слеш будет работать, но git config
синтаксический анализ потребляет один уровень обратного слеша, поэтому нам нужно удвоить обратный слеш:
[merge "netbeans"]
driver = this\\ has\\ spaces
, что дает:
$ git config --get merge.netbeans.driver
this\ has\ spaces
(на этот раз я оставлю читателю hexdump или просмотр других символов).
В качестве альтернативы, мы можем поместить всю строку в двойные или одинарные кавычки. Эксперимент с git config --get
показывает, что git config
сам по себе не заключает в себе одинарные кавычки:
[merge "netbeans"]
driver = 'this has spaces'
$ git config --get merge.netbeans.driver
'this has spaces'
но он кушает двойные кавычки:
[merge "netbeans"]
driver = "this has spaces"
$ git config --get merge.netbeans.driver
this has spaces
Решением для последнего является заключение двойных кавычек, например, с использованием обратной косой черты:
[merge "netbeans"]
driver = \"this has spaces\"
$ git config --get merge.netbeans.driver
"this has spaces"
(что показывает, почему мы должны были удвоить обратную косую черту ранее).
Что, если таковое имеется, подходит для вашей оболочки , зависит от вашей оболочки. Я обычно предпочитаю двойные кавычки в большинстве случаев, но здесь одинарные кавычки проще всего написать, и они подойдут для моей оболочки, поэтому я бы использовал:
driver = '/home/steam/...'
(за исключением того, что я бы не стал ставить пробелы в именах путей в первую очередь, чтобы не делать ничего из этого ...).
Наконец, хотя вы, вероятно, do хотите сделать это для этого конкретного случая, редко очень хорошо жестко кодировать полные пути, подобные этому, когда оболочка ищет $PATH
для вас. Если существует программа X , к которой другие программы P и Q должны иметь доступ, X должна быть включена $PATH
, когда P и Q run. Например, собственные внутренние сантехнические программы Git живут в git --exec-path
, поэтому, когда вы запускаете git <em>command</em>
, передний конец git
вставляет свой собственный путь --exec-path
в начало $PATH
, а затем просто запускает git-<em>command</em>
, который находит первый исполняемый файл с именем git-<em>command</em>
в $PATH
. Это означает, что вы можете написать свои собственные программы Git, в том числе такие, как стратегии подключения, стратегии слияния или драйверы слияния, и тогда Git и оболочка смогут найти их для вас. Например, если вы напишите команду git-frob
, поместите ее где-нибудь в ваш $PATH
, а затем запустите git frob
, вы обнаружите, что Git запускает вашу собственную команду git-frob
(с добавлением $PATH
, чтобы указать на код git-core, так что git-frob
может легко набрать git-sh-setup
.