Cygwin - CD в сценарии удара

Я плохо знаком с использованием Cygwin, таким образом, извинения, если это очень вопрос о новичке.

У меня есть сценарий удара, где я "CD" к каталогу затем делаю что-то в том каталоге. Однако команда CD не перестала работать с "Никаким таким файлом или каталогом/c/code/blah/blah".

Если я копирую строку CD непосредственно в приглашение оболочки, то это хорошо работает. Это просто перестало работать в сценарии.

[редактирование] Согласно просьбе, я добавил фактические строки из сценария:

#!/bin/bash
cd /c/Code/Project

Слова благодарности для любой справки с этим,
Dan.

12
задан 16.09.2010, 15:08

5 ответов

Какие окончания строки Ваш сценарий имеет? Чтобы сценарий удара Cygwin работал правильно (не имея необходимость устанавливать специальные опции), он должен иметь окончания строки Unix (LF), а не окончания строки DOS (CR-LF). При сохранении сценария с окончаниями строки DOS удар будет видеть аргумент cd как /c/Code/Project^M, где ^M CR и не найдет каталог тем именем.

Для наблюдения, какой вид окончаний строки это имеет можно выполниться file scriptname, где scriptname является названием Вашего сценария. Для преобразования сценария так, чтобы это имело окончания строки Unix выполниться d2u scriptname.

Не используйте Блокнот для редактирования сценариев удара Cygwin. Это всегда сохранило файлы с окончаниями строки DOS.

18
ответ дан 07.12.2019, 11:50

Если Вы не переопределяете, сценарий выполняется в его собственной копии оболочки (обычно Bash). Затем, когда сценарий выходит, тот экземпляр удара также выходит. Так Ваш сценарий CD в новый каталог и затем выходит, возвращая Вас исходному Bash - который никогда не делал CD.

Два способа работать вокруг этого. Можно использовать псевдоним вместо сценария, например, в .profile имеют

alias mycd="cd /c/Code/Project"

Иначе должен сказать Bash не порождать подоболочку при помощи "точечного" синтаксиса

. myscript
3
ответ дан 07.12.2019, 11:50

Попытка:

cd /cygdrive/c/code/blah/blah

1
ответ дан 07.12.2019, 11:50

Вы могли бы найти свои файлы в/cygdrive/c...

2
ответ дан 07.12.2019, 11:50

У меня нет репутации, чтобы прокомментировать или голосовать, но ответ CarlF помог мне.

"Так Ваш сценарий CD в новый каталог и затем выходит, возвращая Вас исходному Bash - который никогда не делал CD".

Тот же сценарий, но в моем случае, никаком сообщении об ошибке.

Это работало на меня:

. myscript.sh

1
ответ дан 07.12.2019, 11:50

Теги

Похожие вопросы