5 votes

Scripting Bash simple

J'essaie de me familiariser avec les scripts Bash via Cygwin. Mon script est aussi simple que possible.

Je change le répertoire à la racine de mon lecteur C, et j'imprime le nouvel emplacement.

#!/usr/bin/bash 
cd /cygdrive/c
pwd

est enregistré dans le fichier chdir.sh dans mon répertoire personnel. J'appelle ensuite ./chdir.sh à partir de l'invite bash. Cela donne lieu à l'erreur

: No such file or directorygdrive/c
/cygdrive/c/Documents and Settings/rcotton

J'ai bien un disque C, et la commande cd /cygdrive/c fonctionne lorsque je l'appelle directement depuis l'invite bash.

Je me rends compte que ce problème est probablement très simple ; pouvez-vous me dire ce que je fais de mal ?

7voto

akira Points 58339

Au cas où vous auriez édité votre script avec un éditeur qui ne fait pas partie de l'application l'environnement Cygwin (par exemple, quelque chose comme 'Notepad*', 'WordPad', etc.) : convertissez votre script en caractères Unix via l'outil 'dos2unix'.

Le script lui-même est absolument correct, il n'est pas nécessaire de procéder à des modifications / ou \. Le message d'erreur

: No such file or directorygdrive/c

m'amène à penser à des problèmes avec la mise en ligne depuis \r\n (Fin de ligne Windows). Au cas où vous n'auriez pas installé 'dos2unix' :

tr -d \\r < win.txt > unix.txt

ou

sed -e 's/$/\r/' < unix.txt > win.txt

0voto

ttarchala Points 831

Êtes-vous sûr d'utiliser une barre oblique et non une barre oblique inverse dans votre commande cd ? Votre problème serait symptomatique d'une confusion entre les deux.

Essayez ces variantes si une seule barre oblique est effectivement présente et produit cette erreur bizarre :

cd //cygdrive//c

ou

cd \\cygdrive\\c

0voto

mpez0 Points 2721

Essayez #!/usr/bin/bash.exe et voir si cela fait une différence. Les deux fonctionnent sur mon installation Cygwin, mais le fichier est en fait nommé bash.exe.

0voto

Lark Points 1640

À : ttarchala (et M. Cotton)

Dans cygwin, //start1/path_2/stuff/long déclenche le mode de piratage de l'UNC, qui traite start1 comme un serveur SMB avec un partage path_2 . Ce n'est pas ce qui était prévu.

Cela vous piquera parfois dans certains Shell Shell qui sont partagés avec UNIX, où les slashs multiples vers l'avant sont toujours coalisés en un seul slash. Dans cygwin, les slashs multiples sont coalescés SAUF si c'est celui du début, ce qui est un mode de déclenchement UNC.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X