Soy bastante nuevo en Bash y Linux en general. Creé un par de secuencias de comandos que me gustaría poder usar escribiendo el comando, en lugar del directorio y el archivo ejecutable. Estoy usando Debian Jessie si eso marca la diferencia.
La ruta a uno de mis scripts es ~/Scripts/DIR_1/My_Script.sh
mientras que otro está en ~Scripts/DIR_2/My_Other_Script.sh
. Me gustaría que TODAS las secuencias de comandos contenidas en el directorio de secuencias de Scripts
se indexen como comandos, independientemente de la profundidad del directorio/ruta.
He añadido este texto al final de mi archivo .bashrc
...
PATH=${PATH}:$(find ~/Scripts -type d | sed '/\/\\./d' | tr '\n' ':' | sed 's/:$//')
Como soy bastante nuevo en este tipo de cosas, tuve que robar esa línea de aquí .
Cuando trato de ejecutar My_Script
desde la línea de comando dentro de un subdirectorio de mi carpeta de inicio (o en cualquier otro lugar) obtengo My_Script: command not found
Admitiré fácilmente que podría haber entendido mal el proceso de agregar un script bash a la línea de comando.
¿Cómo agrego recursivamente scripts bash como comandos? ¿Qué está mal con el proceso que estoy usando actualmente?
Creo que su problema es que no está poniendo el .sh, que es parte de su nombre de archivo.
Normalmente, presionar tabulador después de haber escrito solo la primera letra debería completar el comando hasta el punto donde hay una ambigüedad (o completamente si no la hay). En caso de ambigüedad, al pulsar tabulador por segunda vez se muestran las opciones. Entonces, en su caso, si escribe My<tab><tab>
, debería mostrar las opciones My_Script.sh
y My_Other_Script.sh
. Y si escribe My_Script<tab>
debería completarse poniendo My_Script.sh
Editar
Olvidé precisar que puede verificar el valor de PATH haciendo echo $PATH
. Esto le permitirá verificar que el comando que copió hizo lo que quería.