12 votes

Impossible de "cd" ou de changer de répertoire en utilisant bash script en WSL

J'ai installé Ubuntu bash sur ma machine Windows, afin que je puisse tester les scripts linux loin du travail. J'ai créé un scripts très simple avec un "hello world" basique et un changement de répertoire (cd), mais lors de son exécution, il affiche le hello world. Il se plante sur la ligne cd to directory.

Voici l'erreur :

$ ./test.sh
hello world
zipping away
./test.sh: line 6: cd: $'/home/fjaffer/temp\r\r': No such file or directory
./test.sh: line 7: $'\r': command not found
ffr@DP-PC:~$

Mon script test.sh est ci-dessous :

#!/bin/bash
echo "hello world"
echo "zipping away"
dir=/home/fjaffer/temp
cd $dir

Veuillez me conseiller. Merci.

17voto

Ravexina Points 50599

C'est parce que vous avez créé votre script dans une machine Windows, une certaine \r (retour chariot) a été ajouté à la fin de chaque ligne.

Retirez-les comme ceci :

tr -d '\r' < test.sh > new-test.sh

Citez également la valeur de la variable :

cd "$dir"

puis lancez votre script :

./new-test.sh

En guise d'indication, il est également préférable de l'utiliser :

 cd ... || exit

en cas de défaillance.


Configurez votre éditeur pour qu'il utilise le format Linux pour enregistrer les fichiers (s'il en est capable) ou utilisez un éditeur en bash comme nano :

enter image description here

11voto

αғsнιη Points 33236

Une autre option consiste à utiliser dos2unix pour convertir le fichier au format de type Unix.

Uso:

dos2unix your_file

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