Como faço para marcar arquivos em lote como executáveis no bash / cygwin?

4

Na minha busca para melhorar minha experiência no meu ambiente windows 7, instalei o cygwin e comecei a usar o mintty como minha ferramenta de interface de linha de comando. Isso foi legal e me leva de volta aos meus dias mais produtivos trabalhando em um ambiente unix.

Há uma coisa chata, no entanto, que eu não consigo trabalhar corretamente. Arquivos em lote (ou seja, * .bat) não serão preenchidos automaticamente na linha de comando, nem serão exibidos corretamente coloridos quando ls --color for usado. Eu rastreei isso (eu acho) para o fato de que os arquivos bat estão aparecendo como rw-r - r--. Eu posso fazer algo como ./run_my_batch_file.bat na linha de comando e o arquivo em lote será executado corretamente, mas eu tenho que digitar o nome completo do arquivo ou então o preenchimento automático não irá buscá-lo.

Eu tentei executar o 'chmod 750' (assim como vários outros modos de arquivo) para mudar o arquivo de lote para usar o bit 'x', mas seus bits de modo não mudaram. Tenho certeza que posso atribuir isso ao fato de que estou montando minhas unidades locais com a opção 'noacl'. Aqui está a linha relevante do meu fstab:

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

Eu coloquei o 'noacl' porque sem ele, os bits do modo de arquivo parecem todos estragados. Aqui está uma listagem de exemplo sem o parâmetro '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

(note que o diretório listado acima é da minha unidade / cygdrive / d - que é um sistema de arquivos NTFS local). Isso pareceu muito confuso, então eu fui com a opção de montagem 'noacl' para obter modos de arquivo precisos para os arquivos em meus diretórios.

Uma última nota - Eu tenho o pacote completo de conclusão instalado. Eu olhei brevemente para ver se eu poderia modificar um dos pacotes de conclusão para obter pelo menos parte do que eu quero (o que é auto-preenchimento de arquivo em lote), mas eu não encontrei nada que fosse relevante lá.

Então, minhas perguntas podem alterar corretamente os modos de arquivo de arquivo em lote para incluir 'x' para que eu possa obter o preenchimento adequado da linha de comando (assim como obter o diretório apropriado para eles, porque são arquivos executáveis). O preenchimento automático é mais importante para o FWIW.

Obrigado.

    
por Mark 29.08.2011 / 16:25

2 respostas

2

Não tenho certeza da resposta à sua pergunta, mas eis algumas coisas que podem ajudar:

  • Verifique se a variável de ambiente PATHEXT inclui .BAT .
  • Leia sobre a opção noacl aqui . Parece que é melhor remover noacl e gastar algum tempo para obter as permissões reais corretamente.
  • Pergunte na lista de discussão do cygwin . Há muitos especialistas que quase certamente podem responder sua pergunta.
por 27.10.2011 / 16:53
0

Para quem usa noacl options (a única opção sensata a viver fora do Cygwin), adicione dois pontos : como primeira linha do seu arquivo de lote.

Documentos oficiais diz:

Files ending in certain extensions (.exe, .com, .lnk) are assumed to be executable. Files whose first two characters are "#!", "MZ", or ":\n" are also considered to be executable.

    
por 12.04.2018 / 11:40