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

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

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

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

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

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

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


Дан.

29
задан Dan
26.01.2023 20:29 Количество просмотров материала 2871
Распечатать страницу

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 2023-01-28 04:17

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

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

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

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

. myscript
2
отвечен CarlF 2023-01-28 06:34

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

2
отвечен Xenoactive 2023-01-28 08:51

попробуй:

cd /cygdrive/c/code/blah/blah

1
отвечен Mike Fitzpatrick 2023-01-28 11:08

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

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

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

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

. myscript.sh

1
отвечен PJ Brunet 2023-01-28 13:25

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх