4

В своем стремлении улучшить свой опыт работы в среде Windows 7 я установил Cygwin и начал использовать mintty в качестве инструмента интерфейса командной строки. Это было приятно и возвращает меня к более продуктивным дням работы в среде Unix.

Однако есть одна досадная вещь: я не могу правильно работать. Пакетные файлы (т. Е. * .Bat) не будут автоматически завершаться в командной строке и не будут отображаться правильно окрашенными при использовании ls --color. Я связал это (я думаю) с тем фактом, что файлы летучих мышей отображаются как rw-r - r--. Я могу сделать что-то вроде ./run_my_batch_file.bat из командной строки, и пакетный файл будет работать правильно, но я должен ввести полное имя файла, иначе автозаполнение не поднимет его.

Я попытался запустить 'chmod 750' (а также различные другие режимы файлов), чтобы изменить командный файл, чтобы он содержал бит 'x', но их биты режима не изменились. Я уверен, что могу объяснить это тем, что я монтирую свои локальные диски с опцией noacl. Вот соответствующая строка из моего fstab:

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

Я вставил 'noacl', потому что без него биты режима файла кажутся испорченными. Вот пример списка без параметра 'noacl'.

-r-x------+ 1 Administrators Domain Users 209K Jul 18 16:46 some.dll
-rwx------+ 1 Administrators Domain Users 867K Aug 22 11:21 binary_filea
-rwx------+ 1 Administrators Domain Users 736K Aug 28 18:02 binary_fileb
-rwx------+ 1 Administrators Domain Users 736K Aug 28 17:43 binary_filec
-rwx------+ 1 Administrators Domain Users  14K Jan 21  2010 cache_00.bak
-r-x------+ 1 Administrators Domain Users 354K Jun  6 22:42 cdb.exe
-rwx------+ 1 Administrators Domain Users   22 Mar 14 08:05 cleanup_scratch_folder.bat
drwx------+ 1 Administrators Domain Users    0 Mar  3 14:59 code
-rwx------+ 1 Administrators Domain Users 1.8K Aug 12 14:34 config.txt
-rwx------+ 1 Administrators Domain Users   52 Aug 28 19:05 console_history
-rwx------+ 1 Administrators Domain Users 3.8M Aug 23 09:46 copy_files.bat

(обратите внимание, что приведенный выше список каталогов взят с моего диска /cygdrive /d - локальной файловой системы NTFS). Это казалось довольно запутанным, поэтому я выбрал опцию «noacl», чтобы получить точные режимы файлов для файлов в моих каталогах.

Последнее замечание - у меня установлен полный пакет завершения bash. Я кратко посмотрел, смогу ли я изменить один из пакетов завершения, чтобы получить хотя бы часть того, что я хочу (это автоматическое завершение пакетного файла), но я не нашел там ничего, что могло бы иметь отношение к делу.

Таким образом, мои вопросы могут правильно изменить режимы файла командного файла, чтобы включить 'x', чтобы я мог получить правильное завершение командной строки bash на них (а также получить правильную раскраску каталогов на них, потому что они исполняемые файлы). Автозаполнение является более важным FWIW.

Благодарю.

2 ответа2

2

Я не уверен в ответе на ваш вопрос, но вот несколько вещей, которые могут помочь:

  • Убедитесь, что переменная среды PATHEXT содержит .BAT
  • Читайте о опции noacl здесь. Похоже, вам лучше удалить noacl и потратить некоторое время на то, чтобы получить реальные права.
  • Спросите в списке рассылки cygwin. Там много экспертов, которые почти наверняка могут ответить на ваш вопрос.
0

Для тех, кто использует опции noacl (единственная вменяемая опция для жизни вне Cygwin), добавьте одиночную двоеточие : в качестве первой строки вашего пакетного файла.

Официальные документы говорят:

Файлы, оканчивающиеся на определенные расширения (.exe, .com, .lnk), считаются исполняемыми. Файлы с первыми двумя символами "#!"," MZ "или":\n "также считаются исполняемыми.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .