Cygwin-cd в сценарии bash

Я новичок в использовании Cygwin, поэтому извиняюсь, если это очень новый вопрос.

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

если я копирую строку cd непосредственно в командной строке, то она работает нормально. Это просто не удается в сценарии.

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

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

Спасибо за любую помощь с этим,


Дан.

5
задан Dan
источник

5 ответов

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

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

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

17
отвечен garyjohn 2010-09-16 15:22:27
источник

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

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

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

другой способ-сказать Башу не порождать подоболочку, используя " точку" синтаксис

. myscript
2
отвечен CarlF 2010-09-16 13:08:12
источник

вы можете найти ваши файлы в /cygdrive / c...

2
отвечен Xenoactive 2011-04-29 03:32:53
источник

попробуй:

cd /cygdrive/c/code/blah/blah

1
отвечен Mike Fitzpatrick 2010-09-16 09:43:14
источник

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

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

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

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

. myscript.sh

1
отвечен PJ Brunet 2011-04-29 03:12:32
источник

Другие вопросы bash cygwin