
Escribí un script simple con la extensión .sh
en mi directorio de inicio que puedo ejecutar directamente en mi directorio de inicio, pero quiero ejecutar el script desde todos los directorios en los que estoy. ¿Qué debo hacer?
Respuesta1
De forma interactiva, siempre puede ejecutar sus scripts escribiendo ~/yourscript.sh
en la línea de comando, pero eso es muy limitante, especialmente si desea escribir más scripts que llamen a los scripts que ya ha escrito.
Un enfoque más integrado y flexible implica colocar todos sus scripts en un directorio y agregar ese directorio a su PATH
variable de entorno.
Después de hacer eso, podrá escribir yourscript.sh
y, sin importar en qué directorio se encuentre, el shell encontrará su script y lo ejecutará.
Así es como se suele hacer:
- Cree un
bin
directorio en su directorio de inicio y coloquemv
sus scripts en él. - Cambie todos los scripts a ejecutables (
chmod +x
). - Asegúrese de que su
PATH
variable de entorno contenga su$HOME/bin
directorio. En algunos sistemas, el valor predeterminado~/.profile
agregará su$HOME/bin
directorio automáticamentePATH
, así que verifíquelo~/.profile
antes de modificarlo.
Permítanme ilustrarlo con un guión:
mkdir ~/bin
mv ~/*.sh ~/bin
chmod +x ~/bin/*
if ! grep 'PATH=.*HOME/bin' ~/.profile
then
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.profile
fi
. ~/.profile
echo "$PATH" # you should see your bin directory
cd /tmp # change to another random directory
type myscript.sh # see if the shell finds your scripts
Si ve su bin
directorio en su PATH
, entonces es una buena idea cerrar sesión, volver a iniciarla, cambiar a otro directorio y ejecutar type yourscript.sh
nuevamente para asegurarse de que todo esté configurado correctamente.