sql >> Base de Datos >  >> RDS >> Mysql

Usando Mysql en la línea de comando en osx - ¿comando no encontrado?

Entonces, hay pocos lugares donde la terminal busca comandos. Estos lugares se almacenan en su $PATH variable. Piense en ello como una variable global donde el terminal itera para buscar cualquier comando. Por lo general, estos son binarios, mira cómo se suele hacer referencia a la carpeta / bin.

/bin carpeta tiene un montón de archivos ejecutables en su interior. Resulta que esto es comando. Estas diferentes ubicaciones de carpetas se almacenan dentro de una variable global, es decir, $PATH separados por :

Ahora, por lo general, los programas al momento de la instalación se encargan de actualizar PATH &decirle a tu terminal que hey, puedo ser todos los comandos dentro de mi bin carpeta.

Resulta que MySql no lo hace durante la instalación, por lo que tenemos que hacerlo manualmente.

Lo hacemos siguiendo el comando,

export PATH=$PATH:/usr/local/mysql/bin

Si lo desglosa, export se explica por sí mismo. Piense en ello como una tarea. Entonces export una variable PATH con valor antiguo $PATH concat con el nuevo bin es decir, /usr/local/mysql/bin

De esta manera, después de ejecutarlo, todos los comandos dentro de /usr/local/mysql/bin están disponibles para nosotros.

Hay una pequeña trampa aquí. Piense en una ventana de terminal como una instancia de programa y tal vez algo como $PATH es variable de clase (tal vez). Tenga en cuenta que esto es pura suposición. Así que al cerrar perdemos la nueva asignación. Y si volvemos a abrir la terminal, no tendremos acceso a nuestro comando nuevamente porque la última vez que exportamos, estaba almacenado en la memoria principal, que es volátil.

Ahora necesitamos exportar nuestros binarios mysql cada vez que usamos la terminal. Así que tenemos que persistir concat en nuestro camino.

Es posible que sepa que nuestro terminal usa algo llamado dotfiles para cargar la configuración en la inicialización del terminal. Me gusta pensar que es como conjuntos de cosas que se pasan al constructor cada vez que se crea una nueva instancia de terminal (nuevamente una suposición pero cercana a lo que podría estar haciendo). Así que sí, ahora entiendes lo que vamos a hacer.

.bash_profile es uno de los principales dotfile conocidos .

Entonces, en el siguiente comando,

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile

Lo que estamos haciendo es guardar el resultado de echo es decir, cadena de salida a ~/.bash_profile

Ahora, como señalamos anteriormente, cada vez que abrimos una terminal o una instancia de la terminal, nuestros dotfiles están cargados. Entonces .bash_profile se carga respectivamente y export que agregamos arriba se ejecuta y, por lo tanto, es nuestro $PATH global se actualiza y obtenemos todos los comandos dentro de /usr/local/mysql/bin .

PD.

si no está ejecutando el primer comando de exportación directamente sino simplemente ejecutando el segundo para persistir? Que para la instancia de ejecución actual de la terminal que tiene que,

source ~/.bash_profile

Esto le dice a nuestra terminal que vuelva a cargar ese archivo en particular.