Ouvrez Cygwin dans un dossier spécifique

226

Comment puis-je créer un raccourci Cygwin qui ouvrira Cygwin dans un dossier spécifique? Cela éviterait d'avoir à taper

cd /cygdrive/c/Users/Tom/Desktop/

chaque fois que je lance Cygwin.

Randomblue
la source
2
créer un fichier .bat: voici un tutoriel computerhope.com/batch.htm
Umar Jamil
Remarque: il se peut que le package chere doive être instancié avec des privilèges d'administrateur. Si vous êtes pris par cela et que vous êtes tenté de l'utiliser sudo, vous n'obtiendrez peut-être pas le résultat escompté. Dans ce cas, connectez-vous en tant qu'administrateur sur la machine Windows.
dreftymac

Réponses:

410

Lorsque vous installez Cygwin (ou si vous l'avez déjà installé, téléchargez-le à nouveau et redémarrez le programme d'installation pour exécuter une mise à jour), assurez-vous de sélectionner le cherepackage dans la catégorie "Shells".

Après Cygwin est lancé, ouvrir un terminal Cygwin (comme un administrateur) et le type de la commande: chere -i -t mintty -s bash.

Maintenant, vous devriez avoir "Invite Bash ici" dans le menu contextuel du clic droit de Windows.

( mintty est le terminal par défaut de Cygwin. Si vous ne le choisissez pas avec l' -toption, votre "Invite Bash ici" utilisera le même terminal que l'invite de commandes Windows, ce qui empêche le redimensionnement horizontal.)

two7s_clash
la source
39
Super trouvaille, merci! J'ai découvert que vous pouvez spécifier le terminal que vous souhaitez ouvrir en utilisant -t, par exemple, pour ouvrir mintty que vous utilisezchere -i -t mintty
Kevin Condon
29
Vient de tester avec 64 bits cygwin (1.7.27) et chere semble maintenant exister. pro-tip: n'oubliez pas de lancer le terminal cygwin avec des privilèges d'administrateur.
BuildTheRobots
11
Une dernière chose à noter. Si vous l'avez déjà fait avec chere -i -t mintty -fpour forcer l'écrasement. Vous devrez également exécuter cygwin en tant qu'administrateur.
Greg Jennings
29
A eu des problèmes d'autorisation sur W7x64 (Erreur (5): l'accès est refusé. La ruche n'est pas accessible en écriture). Résolu en lançant Cygwin en tant qu'administrateur.
DmitrySandalov
17
Cygwin n'avait pas de shell par défaut dans mon cas, donc l'ajout -s bashde faire a chere -i -t mintty -s bashfait ce travail pour moi
Bryce Guinta
97

Voici ce que j'utilise. Il ne nécessite pas de modification de cherepackage ou de registre. Fonctionne sur Windows 7.

Accédez à votre dossier "Envoyer vers":

C:\Users\<your_user_name>\AppData\Roaming\Microsoft\Windows\SendTo

Créez un raccourci nommé Bash Hereayant ceci dans le Targetchamp:

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico  C:\cygwin\bin\bash.exe  -l -c "cd \"$0\" ; exec bash"

Dans l'Explorateur Windows, vous cliquez avec le bouton droit sur un dossier et sélectionnez Send To > Bash Here.

Et voici l'astuce inverse, ouvrir un explorateur Windows dans votre répertoire bash actuel. Créez cet alias:

alias winx='/cygdrive/c/Windows/explorer.exe /e,\`cygpath -w .\`'

Remarque: la cygpath -w .partie ci-dessus est entourée de graduations.

Maintenant, tapez simplement winxà l'invite bash, et un Win Explorer apparaîtra là-bas.

Remarque: si winx vous dirige vers votre dossier de documents, essayez

alias winx='/cygdrive/c/Windows/explorer.exe /e,`cygpath -w $PWD`'
LindseyD
la source
3
Très bonne astuce, mais l' winxalias n'a pas fonctionné sur ma configuration Cygwin. J'ai dû supprimer les deux barres obliques inverses et les remplacer .par $PWDpour que cela fonctionne.
not2qubit
Que faire si le raccourci (adapté pour utiliser le chemin Cygwin64 de mon installation) ouvre cygwin dans mon dossier utilisateur? :( Peut-être que cela ne fonctionne qu'avec Cygwin 32 bits?
Alex Hall
Celui-ci travaille aussi pour moialias winx='/cygdrive/c/Windows/explorer.exe /e,$(cygpath -wa .)'
Wakan Tanka
1
Dans cygwin 2.6.0 (sur Win 7 x64), cela peut être fait beaucoup plus facilement: cygstart .ouvrir l'Explorateur avec le dossier actuel, ou n'importe quelle syntaxe de dossier cygstart .., cygstart /your/pathetc ...
244an
2
Avertissement: C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico C:\cygwin\bin\bash.exe -l -c "cd \"$0\" ; exec bashgarde le descripteur de fichier ouvert dans le $0répertoire, même après avoir changé le répertoire de travail en autre chose. Pire, la copie de la fenêtre ( ALT+F2), même si vous avez déjà changé de répertoire de travail, ouvre un autre descripteur de fichier $0. Cela peut interférer avec certaines opérations qui peuvent vouloir supprimer / modifier $0dans n'importe quel processus. Si vous obtenez l'erreur «Autorisation refusée» lors de l'accès, $0cela peut être la cause
Matt
33

Depuis le terminal cygwin, exécutez cette commande:

echo "cd your_path" >> ~/.bashrc

Le script .bashrc est exécuté lorsque vous ouvrez une nouvelle session bash. Le code ci-dessus avec changement dans le répertoire your_path lorsque vous ouvrez une nouvelle session cygwin.

bschwagg
la source
3
C'EST LA RÉPONSE! SI FACILE.
Devin Walker
Oui ! C'est facile ! Votez !
Alex Byrth
19
Ce n'est pas la réponse, car il ne crée pas de raccourci qui utilise ledit répertoire, comme requis par la question, il change le comportement de toutes les méthodes de démarrage du shell Cygwin. Vous ne devez pas modifier un paramètre global (ou un profil de connexion) pour résoudre un problème local.
Ben Voigt
Une fois, j'ai utilisé exactement cette méthode pour ajouter un utilisateur au fichier de mots de passe, en laissant accidentellement l'un des >caractères. Puis je me suis déconnecté :-)
paxdiablo
@paxdiablo ouch
bschwagg
30

J'ai créé un fichier .reg qui met une option "Ouvrir Cygwin ici" dans le menu contextuel du clic droit. Cela dépend du package "chere" de Cygwin, que vous pouvez installer en utilisant apt-cyg si vous ne l'avez pas installé dans la configuration initiale.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe"
John Peter Thompson Garcés
la source
7
Pour ceux qui se demandent comment utiliser cela, copiez simplement le texte sur fond gris et placez-le dans un fichier texte appelé "foo.reg" et double-cliquez dessus.
Andrew Moylan
3
+1 la meilleure solution ici. Et merci d'avoir mentionné apt-cyg, je ne connaissais pas cet outil
user11153
C'était exactement ce que je cherchais, et cela m'a même aidé avec d'autres choses car même le site Microsoft ne m'a pas obtenu le même résultat.
FilBot3
J'ai dû changer pour "cygwin" mais j'obtiens cette erreur: "Échec de l'exécution de / bin / xhere: aucun fichier ou répertoire"
Totty.js
@ Totty.js êtes-vous sûr d'avoir installé le package 'chere' dans Cygwin?
Jeutnarg
17

Pour cygwin64 ou les installations sans chere, vous pouvez utiliser la commande suivante dans une entrée de registre (en supposant que les fenêtres sont dues à votre chemin, en supposant également que le répertoire d'installation de cygwin est c: \ cygwin64)

C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd "`cygpath "%V"`"; bash'

Fonctionne sur le fichier de registre Windows 7 et 8 disponible en téléchargement ici: http://tomkay.me/blog/Cygwin64---Open-Here-18

Windows Registry Editor Version 5.00
; Open cygwin to folder
; http://tomkay.me - Tom Kay

[HKEY_CLASSES_ROOT\Folder\shell\open_cygwin]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Folder\shell\open_cygwin\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'"

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'"
Tom Kay
la source
Pouvez-vous expliquer pourquoi vous avez 3 entrées de registre (x2)?
not2qubit
1
ils sont pour les contextes Directory, Drive et Background
Tom Kay
Enfin, une solution qui a fonctionné pour moi, même si j'ai quelques problèmes pour la comprendre complètement ;-) [le 'bash' après 'exec bash']. Astuce: vous pouvez remplacer les 3 entrées par 1: «Dossier» au lieu de «Répertoire», «Lecteur» et «Arrière-plan».
t0r0X
avec juste 'Dossier', le lien apparaît dans le menu contextuel d'un lecteur, mais ne s'exécute pas. Cependant, j'ai pu réduire à 2 entrées avec «Dossier» et «Répertoire \ Contexte»
Tom Kay
1
Pour emacs: "C: \\ cygwin \\ bin \\ mintty.exe -i /Cygwin-Terminal.ico / bin / bash -l -c 'emacs \" cygpath \"%V\"\ ";'"
Jan Matousek
12

Si vous souhaitez avoir ce répertoire par défaut, ajoutez simplement une cdinstruction à votre ~/.profilefichier.

Ce que j'ai tendance à faire, c'est d'utiliser cette méthode pour définir mon répertoire habituel, ainsi que de définir des alias pour mes cas courants:

alias tom="cd /users/tom"

ou votre équivalent. Cela me permet de changer de répertoire très rapidement.

paxdiablo
la source
Cet alias doit-il également être ajouté au ~/.profilefichier ou exécuté une seule fois?
iono
2
@tomeoftom, si vous exécutez simplement cela dans un shell, cela n'affectera que ce shell. Cela n'affectera pas ceux que vous démarrez. Donc, si vous voulez qu'il soit toujours disponible, vous devez le mettre dans l'un de vos fichiers de démarrage (dont ~/.profileune possibilité).
paxdiablo
cela n'a pas fonctionné pour moi une fois mis dans ~ / .profile, mais ~ / .bashrc a fonctionné.
zupa
@zupa, les règles de sélection des fichiers de démarrage sont raisonnablement compliquées (bien que tout soit là dans la bashpage de manuel si vous creusez suffisamment). C'est pourquoi j'ai déclaré .profilecomme une possibilité.
paxdiablo
.profile génère en fin de compte .bashrc, vous pouvez donc ajouter cette commande dans bashrc à la place. (.profile n'a pas fonctionné pour moi)
laertis
8

J'utilise et Icon pour lancer mon cygwin sans le cherepackage.

  1. Créer un raccourci sur mon bureau pour le terminal cygwin.
  2. R-cliquez sur l'icône et sélectionnez les propriétés.
  3. Sur l'onglet de raccourci, utilisez ceci pour la CIBLE: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. Pour START IN, placez le chemin du dossier dir / dans lequel vous souhaitez lancer cygwin. c'est à direC:\some\dir\name\here
Doug
la source
ok 2 choses 1. l'ajout -cdans "Target" ne fait aucune différence tant que vous fournissez un chemin dans "Start In" 2. cette solution crée un problème avec PATH. cygwin ne parvient pas à ajouter /usr/local/bin:/usr/binle PATH du système, laissant impossible d'invoquer certains de ses binaires. La configuration réside probablement dans /etc/profile>> `if [$ {CYGWIN_NOWINPATH-addwinpath} =" addwinpath "]; puis `
laertis
8

Comme l'a dit two7s_clash, vous devez d'abord installer le cherepackage et configurer mintty:

  1. Ouvrez le terminal Cygwin en tant qu'administrateur
  2. apt-cyg install chere
  3. chere -i -t mintty

Vous pouvez maintenant ouvrir cygwin dans un répertoire spécifique avec un clic droit de la souris dans l'Explorateur Windows (menu contextuel) et sélectionnez "Invite Bash ici".

Vous pouvez également ouvrir cygwin à partir d'un répertoire spécifique à l'aide de l'invite de commande Windows:

  1. Ouvrir l'invite de commande Windows
  2. Naviguez ( cd) vers le répertoire personnalisé
  3. Exécuter C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    Cette commande ouvrira cygwin avec le répertoire courant extrait de l'invite de commande.

FreeCommander

Cette commande peut également être utilisée pour ouvrir cygwin à partir du gestionnaire de fichiers personnalisé, comme FreeCommander.

Pour ouvrir cygwin avec le répertoire actuel extrait de FreeCommander, procédez comme suit:

  1. Outils -> Outils favoris -> Édition des outils favoris ... (Ctrl + Maj + Y)
  2. Ajouter une nouvelle barre d'outils (+ icône), Raccourci: Insérer

    • Nom: cygwin
    • Programme ou dossier: C:\cygwin64\bin\mintty.exe
    • Dossier de démarrage: %ActivDir%
    • Paramètre: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

Vous pouvez ajouter un raccourci personnalisé pour ouvrir cygwin depuis FreeCommander:

  1. Outils -> Définir les raccourcis clavier
  2. Faites défiler jusqu'à "Outil préféré 01" (ou "Outil préféré N")
  3. Attribuer une nouvelle touche de raccourci: j'utilise Ctrl+ Shift+T

Grande référence: MinTTY Wiki, article Conseils: Commencer dans un répertoire particulier

nexayq
la source
5

Pour créer un raccourci Windows qui lance un terminal Cygwin dans un répertoire de votre choix, essayez ce qui suit:

  • Cliquez avec le bouton droit sur le bureau Windows, sélectionnez «Nouveau», puis sélectionnez «Raccourci».

  • Pour l'emplacement de l'élément, entrez le texte suivant, en changeant le minttychemin si nécessaire et en remplaçant le nom du répertoire souhaité où indiqué.

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd DESIRED-DIRECTORY; exec bash'
    

    Par exemple, l'OP utiliserait le texte suivant:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • Cliquez sur Suivant'.

  • Entrez le nom souhaité pour le raccourci et cliquez sur «Terminer».

Plusieurs raccourcis peuvent être placés sur le bureau pour ouvrir les terminaux Cygwin dans divers répertoires souvent consultés.

Inspiré par la solution publiée sur Comment ouvrir un shell Cygwin dans un répertoire spécifique de Netbeans? sur superuser.com .

Patrick Kelly
la source
4

Recherchez le fichier Cygwin.bat et créez un contenu comme celui-ci:

@echo off
set newpath=%cd:\=/%
pushd "%~dp0"
chdir bin
bash --login -i -c "cd \"%newpath%\"; exec bash"

Ajoutez le chemin vers cygwin.bat au PATH de l'environnement.

Maintenant, dans n'importe quel dossier, vous pouvez taper dans la barre d'adresse:

cygwin

Vous pouvez également le taper lorsque vous dans cmd.exe

Géographie
la source
3

J'ai utilisé les lignes de code suivantes pour démarrer zsh dans le répertoire courant de Win7.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="\"C:\\Programmieren\\cygwin64\\bin\\mintty.exe\" -i /Cygwin-Terminal.ico /bin/zsh --login -c 'cd \"%V\";zsh'"

notez que j'ai utilisé% V au lieu de% L ou% 1 (car les deux ne fonctionnaient pas pour moi)

H. Hess
la source
3

Lorsqu'une nouvelle installation est nécessaire, je crée une "variable d'environnement utilisateur" Windows nommée HOMEet lui attribue le chemin de l'emplacement de "Mes documents".

Le programme d'installation de cygwin détecte la HOMEvariable, la traduit automatiquement en un cygpath et la sélectionne comme mon répertoire ~.

Cela a bien fonctionné pour chaque poste de travail que j'ai utilisé professionnellement au cours des 5 dernières années (environ 3 ou 4, Win7). J'ai toujours été le seul utilisateur sur ces machines, je ne peux pas dire quel est l'effet.

Adam.at.Epsilon
la source
3

J'ai créé un script de modification du registre pour ouvrir Cygwin dans n'importe quel dossier sur lequel vous faites un clic droit. C'est sur mon GitHub.

Voici mon GitHub

Exemple de RegEditcode de Github pour les machines 64 bits:

REGEDIT4

[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere]
@="&Cygwin Bash Here"

[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere]
@="&Cygwin Bash Here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""
umer936
la source
Si vous obtenez «Erreur d'accès au registre». erreur voir réponse de @mpersico ci-dessous ... m'aurait fait gagner 15 minutes :)
Daniel Sokolowski
2

Ouvrez le terminal Cygwin en tant qu'administrateur

En PowerShell (utilisant du chocolat):

choco install cyg-get

Dans cygwin, installer le menu contextuel

cyg-get install chere
chere -i

Vous pouvez maintenant cliquer avec le bouton droit de la souris et utiliser "Invite Bash ici" dans n'importe quel dossier.

Jonathan
la source
1

Vous pouvez ajouter l'icône au shell en ajoutant un Iconchamp défini sur le chemin d'accès à votre Cygwin.icofichier.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Cygwin"
"Icon"="\"C:\\cygwin64\\Cygwin.ico\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe"
STEELIX
la source
Je pense qu'une condition préalable à l'existence de xhere est l'installation de chere, comme mentionné dans d'autres réponses.
Samuel
1

Sur ma machine Windows, il ne prenait pas:

chere -i -t mintty

Parce que la coquille de menthe n'était pas disponible, mais vous pourriez avoir le choix de diverses autres coquilles comme ash bash cmd dash mksh pdksh posh tcsh zsh passwd.

j'ai donc utilisé:

chere -i -s bash

user3065757
la source
Mintty n'est pas un shell, c'est un émulateur de terminal.
Palec
Comment cela répond-il à la question d'origine?
Leigh
Cela fournira de l'aide à ceux qui n'ont pas de menthe dans leur système et obtiennent une erreur en essayant la solution fournie ci-dessus, j'ai également suivi la solution fournie ci-dessus mais cela n'a pas fonctionné sur ma machine Windows, mais ma réponse a résolu le problème.
user3065757
1

Vous pouvez simplement ouvrir le terminal cygwin et écrire: cd et après glisser-déposer, déposez le dossier souhaité et entrez!

Panagiotis
la source
Bien que cela ne résout pas complètement la question posée, c'est un conseil très utile. Merci.
RoG
1

Dans la réponse qui utilise le registre, j'ai constaté que sur Windows 2008 R2 SP1, vous devez supprimer l'arrière-plan du chemin. De plus, comme chere et xhere ne font pas partie de cygwin64, voici une solution qui fonctionne pour les deux, combinant le registre et les solutions Send To. Remplacez «E: \ cygwin64» par votre emplacement d'installation:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="E:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico --exec /bin/bash.exe --login -c \"cd '%1' ; exec bash -rcfile ~/.bashrc\""
mpersico
la source
0

C'est la seule solution de registre Cygwin64 qui a fonctionné pour moi dans Windows 8.1:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\mintty]
@="Mintty from Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\mintty\command]
@="C:\\cygwin64\\bin\\mintty.exe -h always -e /usr/bin/ash -c 'cd  \"$(/usr/bin/cygpath \"%L\")\";  exec /usr/bin/bash  '"

Assurez-vous de modifier votre chemin «C: \ cygwin64» si nécessaire.

Smyrnian
la source
0

J'ai créé le fichier de commandes et l'ai placé dans le répertoire / bin de Cygwin. Ce script a été développé afin de permettre d'installer / désinstaller les entrées de registre pour ouvrir les dossiers et lecteurs sélectionnés dans Cygwin. Pour plus de détails, voir le lien http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html .

mise à jour: Cette solution fait la même chose que les premières suggestions mais toutes les manipulations avec le registre Windows sont cachées dans le script.

Exécutez la commande pour installer

cyghere.bat /install

Exécutez la commande pour désinstaller

cyghere.bat /uninstall
jsxt
la source
0

J'ai également eu un problème avec git, qui "volait" mes commandes cygwin - j'ai donc dû exécuter
C:\cygwin\bin\mintty.exe -
mais après avoir installé chereet exécuté en chere -i -t mintty -f tant qu'administrateur (voir ci-dessus), vous pouvez simplement utiliser:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
j'ai ajouté ceci dans Total Commander en tant que bouton personnalisé (à droite cliquez sur le panneau> ajouter ...) et cela fonctionne très bien.

Jakub Michalko
la source
0

Créer un fichier bash dire move.shqui a le code suivant C:\cygwin64\bin\run.exe -p /bin bash runFile.sh Cela démarre le Cygwin et exécute le runFile.shprésent dans le répertoire bin de Cygwin Supposons que vous vouliez naviguer vers un répertoire spécifique disons E:\code alors runFile.sh a le code suivantcd E: cd code

LeelaPrasad4648
la source
0

Enfin une réponse indépendante de Cygwin lui-même.

Cela utilise le fait que, si je suis sur le répertoire C:\\Coolet que j'appelle la commande C:\\Cygwin\\bin\\mintty.exe, minttys'ouvrira automatiquement sur le répertoire courant, c'est-à-dire C:\\Cool.

Tout d'abord, vous devrez créer le fichier C:\\Cygwin\\silent_run.vbsavec le contenu suivant:

Function EnquoteString(argument)
  EnquoteString = Chr(34) & argument & Chr(34)
End Function

arglist = ""
With WScript.Arguments
    For Each arg In .Unnamed
        ' Wscript.Echo "Unnamed: " & arg
        If InStr(arg, " ") > 0 Then
            ' arg contains a space
            arglist = arglist & " " & EnquoteString(arg)
        Else
            arglist = arglist & " " & arg
        End If
    Next
End With

CreateObject("Wscript.Shell").Run Trim( arglist ), 0, False

Ensuite, pour installer cette réponse, vous utiliserez un fichier de registre Windows. Pour cela, il suffit de mettre le contenu du fichier suivant dans un fichier nomméC:\\Cygwin\\AddMinttyToContextMenu.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020

[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here\Command]
@="\"C:\\Cygwin\\bin\\mintty.exe\" -w max"


[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020

[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here\Command]
@="cmd.exe /c cd /d \"%V\" && wscript \"C:\\Cygwin\\silent_run.vbs\" \"C:\\Cygwin\\bin\\mintty.exe\" -w max"

Maintenant, corrigez tous les chemins codés en dur, c'est- C:\\Cygwinà- dire à l'emplacement réel où se trouve votre installation Cygwin.

Ensuite, ouvrez simplement le fichier C:\\Cygwin\\AddMinttyToContextMenu.regpour installer vos nouvelles entrées de registre et vous avez terminé.

Le fichier C:\\Cygwin\\AddMinttyToContextMenu.regfonctionne en ouvrant d'abord a cmd.exe, en changeant dans le répertoire où vous vous trouvez, puis en appelant C:\\Cygwin\\silent_run.vbspour ouvrir le C:\\Cygwin\\bin\\mintty.exeterminal avec les options de ligne de commande-w max , c'est-à-dire pour l'ouvrir maximisé.

Le script C:\\Cygwin\\silent_run.vbsest nécessaire pour ouvrir le C:\\Cygwin\\bin\\mintty.exeterminal sans garder le premier que cmd.exenous avons ouvert, ouvert.

La première entrée de C:\\Cygwin\\AddMinttyToContextMenu.regn'utilise pas C:\\Cygwin\\silent_run.vbscar par défaut les HKEY_CLASSES_ROOT\Directory\Background\shellclés sont déjà ouvertes dans le répertoire courant, alors, on peut simplement appelerC:\\Cygwin\\bin\\mintty.exe directement pour le faire fonctionner hors de la boîte.

Références:

  1. Comment ajouter un élément de menu contextuel à l'Explorateur Windows pour les dossiers
  2. VBScript passe l'argument de ligne de commande dans les chemins avec des espaces
  3. Comment passer une commande avec des espaces et des guillemets en tant que paramètre unique à CScript?
  4. appeler vbscript à partir d'un autre fichier vbscript en passant des arguments
  5. https://ss64.com/vb/syntax-args.html
  6. Vérifiez si la chaîne contient de l'espace
  7. Exécuter la ligne de commande en silence avec VbScript et obtenir une sortie?
  8. http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
  9. /superuser/62525/run-a-batch-file-in-a-completely-hidden-way
  10. Comment exécuter le script Batch reçu comme argument sur VBscript?
  11. Puis-je passer un argument à un VBScript (fichier vbs lancé avec cscript)?
utilisateur
la source
-1
@echo off
C:
SET mypath=%~dp0
c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i"

Copiez les commandes ci-dessus dans un fichier texte et enregistrez-le sous .bat dans n'importe lequel de "votre dossier d'intérêt". Il devrait ouvrir cygwin dans "votre dossier d'intérêt".

Kalyan
la source
-1

basé sur la réponse de @LindseyD J'ai créé un simple fichier BAT, qui ouvre cygwin dans le répertoire courant, il peut être utile (pour moi, c'est le cas). En supposant que vous avez le répertoire bin de cygwin dans PATH.

FOR /F %%x IN ('sh -c pwd') DO bash -l -i -c 'cd %%x; exec bash'
Roman Hocke
la source
-1

Je ne sais pas pourquoi j'ai dû perdre autant de temps, mais cela fonctionne pour moi lors de la victoire 10, 64 bits:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""
Totty.js
la source
-1

Probablement le plus simple:

1) Créez le fichier foo.reg

2) Insérez le contenu:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty]
@="open mintty"

[HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty\command]
@="cmd /C mintty"

3) Exécutez foo.reg

Maintenant, open minttyfaites un clic droit dans n'importe quel dossier, cliquez dessus et il apparaîtra dans ce dossier.

lama12345
la source
-2

Mieux vaut faire comme ci-dessous:

HKEY_CLASSES_ROOT\Directory\shell\BashHere
Enter Data: Bash Here

HKEY_CLASSES_ROOT\Directory\shell\BashHere\command
Enter Data: 

cmd.exe /c C:\cygwin\bin\bash.exe --login -c "cd '%1'; exec /bin/bash"
Shashi Ranjan
la source