In meinem Bestreben, meine Erfahrung in meiner Windows 7-Umgebung zu verbessern, habe ich cygwin installiert und Mintty als mein Befehlszeilenschnittstellentool verwendet. Das war schön und führt mich zurück zu meinen produktiveren Tagen in einer Unix-Umgebung.
Es gibt jedoch eine ärgerliche Sache, dass ich nicht richtig arbeiten kann. Stapeldateien (d. H. * .Bat) werden in der Befehlszeile nicht automatisch vervollständigt und bei Verwendung von ls --color auch nicht in der richtigen Farbe angezeigt. Ich habe das aufgespürt (glaube ich), dass die Fledermausdateien als rw-r - r-- angezeigt werden. Ich kann so etwas wie ./run_my_batch_file.bat über die Befehlszeile ausführen, und die Batchdatei wird ordnungsgemäß ausgeführt, aber ich muss den vollständigen Dateinamen eingeben, da die automatische Vervollständigung dies nicht übernimmt.
Ich habe versucht, 'chmod 750' (sowie verschiedene andere Dateimodi) auszuführen, um die Batch-Datei so zu ändern, dass sie das 'x'-Bit enthält, aber ihre Modus-Bits haben sich nicht geändert. Ich bin mir ziemlich sicher, dass ich das darauf zurückführen kann, dass ich meine lokalen Laufwerke mit der Option 'noacl' mounte. Hier ist die relevante Zeile aus meiner fstab:
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
Ich habe die 'noacl' eingefügt, da ohne sie die Dateimodus-Bits alles durcheinander zu sein scheinen. Hier ist ein Beispielprotokoll ohne den Parameter '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
(Beachten Sie, dass das oben aufgeführte Verzeichnis von meinem Laufwerk / cygdrive / d stammt - einem lokalen NTFS-Dateisystem). Das schien ziemlich durcheinander zu sein, also entschied ich mich für die Mount-Option "noacl", um genaue Dateimodi für die Dateien in meinen Verzeichnissen zu erhalten.
Ein letzter Hinweis: Ich habe das vollständige Paket zur Bash-Vervollständigung installiert. Ich habe kurz nachgesehen, ob ich eines der Vervollständigungspakete modifizieren kann, um zumindest einen Teil meiner Anforderungen zu erfüllen (dies ist die automatische Vervollständigung von Batch-Dateien), aber ich habe dort nichts gefunden, was relevant wäre.
Daher kann ich bei meinen Fragen die Modi für Batch-Dateidateien so ändern, dass sie 'x' enthalten, damit ich die Bash-Befehlszeile ordnungsgemäß vervollständigen kann (und auch die richtige Verzeichnisfarbe für sie erhalten, da es sich um ausführbare Dateien handelt). Auto-Vervollständigung ist wichtiger FWIW.
Vielen Dank.
noacl
Option, sehen Sie genaue Berechtigungen. Der Teufel steckt im Detail. Die Dateien, die Sie in Ihrer Verzeichnisliste anzeigen, gehören sämtlichen Gruppenadministratoren (ja, Gruppen können der primäre Eigentümer von Dateien in Windows sein). Das Nachlaufen+
on the permissions bedeutet, dass es Berechtigungen gibt, die im klassischen UNIX nicht codiert werden könnenrwxrwxrwx
Syntax. Diese Berechtigungen sind in der ACL (Access Control List) verschlüsselt. Sie können die vollständige ACL für eine Datei oder ein Verzeichnis anzeigen, indem Sie Folgendes eingebenicacls FILE
.rwxrwxrwx
"Syntax", auf die ich in meinem vorherigen Kommentar verweise, sind Dinge wie das ACE, das SYSTEM die vollständige Kontrolle über Ihre Dateien gewährtsetfacl
Befehl:setfacl -s user::rw-,group::r--,other:r-- FILE
Das-s
Option zusetfacl
bedeutet, dass die ACL auf genau das eingestellt wird, was angezeigt wird, und die vorhandene ACL ersetzt wird. Cygwinssetfacl
wird dies tun, indem geerbte ACLs entfernt werden.Antworten:
Ich bin mir der Antwort auf Ihre Frage nicht sicher, aber hier sind ein paar Dinge, die helfen könnten:
PATHEXT
Umgebungsvariable enthält.BAT
.noacl
Möglichkeit Hier . Es scheint, dass Sie es vielleicht besser machen, um zu entfernennoacl
, und verbringen Sie einige Zeit damit, die richtigen Berechtigungen zu erhalten.quelle
Für diejenigen, die verwendet
noacl
Optionen (die einzige vernünftige Option, um außerhalb von Cygwin zu leben) fügen einen Doppelpunkt hinzu:
als erste Zeile Ihrer Batch-Datei.Offizielle Dokumente sagen:
quelle