$ /bin /bash^m: intérprete malo: no hay dicho archivo o directorio
En este tutorial, veremos cómo solucionar el problema que ocurre mientras se ejecuta Bash o.archivo sh en un entorno de Linux. El pobre intérprete es otro nombre para este error. Puede creer que esta es una restricción de permisos e intente usar el comando chmod +x para otorgar el archivo de script de shell todos los privilegios requeridos, pero esto no resolverá el problema. El script especifica que se ejecutaría usando el caparazón "/bin/bash^m". No hay tal archivo; en su lugar, se usa "/bin/bash". El personaje "^m" significa Retorno del carro.
El carácter de alimentación de línea a menudo se usa en Linux para indicar el final de una línea, mientras que la secuencia de dos caracteres CR/LF se usa a menudo en los sistemas operativos tipo Windows. El archivo contiene marcadores de terminaciones de línea de Windows, lo que hace que Linux esté perplejo. En un archivo de script de bash, ¿cómo puedo ver los caracteres de codificación de CR o LF?? También puede ver los caracteres finales de línea como LFCR o LFCR por vista → Símbolo de exposición → Mostrar final de línea. A continuación se muestra un ejemplo de un archivo con caracteres CR o LF:
Las pantallas de arriba y a continuación no están disponibles en el editor de Bloc de notas básico; En su lugar, debe instalar Notepad ++, una versión avanzada de Notepad. Para corregir el error en el sistema operativo de Windows, abra el archivo de script de bash en el editor de notas ++ y luego vaya a la pestaña Preferencias a través del menú Configuración como se muestra a continuación. Cierre la ventana después de elegir UNIX/OSX como formato. Luego, guarde y cierre el archivo.
Preferencias → Nuevo documento/pestaña Directorio predeterminada → Configuración → Preferencias → Nuevo documento/pestaña Directorio predeterminado → Elegir un nuevo formato de documento →
Uso del comando de editor de transmisión
En UNIX, el comando SED representa un editor de línea por línea, y puede realizar una amplia gama de procedimientos de archivo, como escanear o buscar, encontrar y reemplazar, insertar y eliminar. El comando SED se usa más comúnmente en los sistemas operativos de unix y Linux para sustituir o encontrar y reemplazar. Elimine los personajes de CR que no se supone que estén allí. Puede usar (SED) el siguiente comando en la imagen para lograr esta tarea:
Mediante el uso de la utilidad DOS2UNIX
DOS2UNIX es un programa que convierte DOS en UNIX. Para resolver el script de shell para los sistemas operativos UNIX-Linux, instalar la utilidad DOS2UNIX y luego ejecute el comando DOS2UNIX que se proporciona a continuación:
$ dos2unix nombre de archivo.mierda
Si obtiene el error de comando no encontrado, primero instale la utilidad DOS2UNIX ejecutando el comando a continuación desde un shell de línea de comando de Linux:
$ sudo apt-get instalación dos2unix
Puede usar el comando unix2dos para convertir el archivo de nuevo en formato DOS.
En un archivo de script bash, ¿cómo puedo ver los caracteres de Cr LF?? Intente el archivo, archivo -k y finalmente el comando DOS2UNIX -IH como en la pantalla a continuación: intento de archivo, archivo -k y finalmente el comando dos2UNIX -IH como en la pantalla a continuación. Para la línea Linux/Unix "CR", simplemente imprime texto.
Puede instalarlo en el sistema operativo MacOS utilizando HomeBrew de la siguiente manera:
$ brew install dos2unix
Luego, ejecute el siguiente comando a continuación para convertir el archivo en formato DOS en formato UNIX:
$ dos2unix nombre de archivo.mierda
¿Cuál es el propósito del comando dos2unix?
DOS2UNIX es una utilidad que traduce DOS Line Endings CR (Carriage Return) +LF (Feed de línea) a Codificaciones de línea UNIX en archivos de texto LF (Feed de línea). También puede convertir entre UTF-16 y UTF-8 caracteres. Puede traducir de UNIX a DOS mientras utiliza el comando unix2dos. Expectadoramente, esto resolverá el problema que estaba teniendo.
Usando Vim Editor
Si no tiene la utilidad DOS2UNIX instalada en su sistema operativo Linux, puede usar el editor VIM para transformar el formato de su script de shell en UNIX. Use la instrucción siguiente para abrir el archivo en el editor VIM:
VI Nombre de archivo.mierda
O
nombre de archivo vim.mierda
Si no está en el directorio o carpeta actual donde se encuentra el script de su archivo Bash, escriba la ruta completa del directorio, como lo hice yo. Pero si está en el mismo directorio o carpeta, puede ejecutar el comando directamente como se indica anteriormente. Vim es una forma progresiva del editor de VI. Los comandos VI y VIM hacen el mismo trabajo. Ejecute el comando debajo para cambiar el formato de archivo al sistema operativo UNIX:
$: establecer ff = unix
Luego, utilizando los comandos a continuación, todos los cambios se guardan y cierran el archivo en el editor, escriban el archivo y cierran. Ahora has terminado. Puede convertir el formato de su script de shell a unix a través de cualquiera de los enfoques descritos anteriormente. Esperamos que la información anterior ayude a resolver su problema.
$: WQ!
Conclusión
Se trata del uso de métodos simples para resolver el problema "bin/bash^m: intérprete malo: no hay dicho archivo o directorio". Todos los ejemplos utilizados aquí son simples y fáciles de implementar. Esperamos que te guste y aprendas más de él.