Estoy en el sistema operativo 10.6 de Mac y estoy tratando de aprender un par de cosas sobre las secuencias de comandos de shell. Entiendo cómo guardar un script de shell y convertirlo en ejecutable, pero me pregunto qué puedo hacer o dónde puedo guardar el archivo para hacerlo global (es decir, accesible sin importar en qué carpeta esté).
Por ejemplo, si guardo un archivo .sh en el directorio / Users / username / y lo hago ejecutable, solo puedo ejecutar ese script en ese directorio específico. Si navego a / Users / username / Downloads, por ejemplo, no puedo ejecutar el script.
Además, sería útil cualquier sugerencia de recursos para aprender más sobre secuencias de comandos de shell. Gracias
PATH
Primero lea sobre la variable de entorno y luego actualice la pregunta.Respuestas:
/usr/local/bin
sería la ubicación más apropiada. Mac OS X lo tienePATH
por defectofuente
Tradicionalmente, tales scripts entran
~/bin
(es decir, el directorio bin en su directorio de inicio) o./usr/local/bin/
El primero significa que el script solo funcionará para usted, el segundo es para los scripts que desea que cualquier persona del sistema pueda ejecutar.Si lo coloca
~/bin
, es posible que deba agregarlo a su variable de entorno PATH./usr/local/bin
ya debería estar en el camino.fuente
Hay dos maneras de hacerlo -
** NOTA : Si desea ejecutar el script con un comando abreviado en lugar de escribir el nombre de archivo completo, agregue lo siguiente a su .bash_profile:
alias myscript='my_script.sh'
Luego, puede ejecutar el script simplemente escribiendo
myscript
. (puedes sub en el alias que quieras)fuente
En el sistema operativo mac
fuente
.bash_profile
? Es mucho más simple (y esa cosa de fuente .bashrc nunca funcionó para mí).¡Este es muy fácil si está familiarizado con su archivo bashrc! Esto utilizará completamente solo su archivo .bashrc y tardará 2 segundos en realizarse.
(Yo uso Arch Linux Manjaro, así que uso .bashrc ubicado en mi directorio de inicio)
El código que se colocará en su archivo .bashrc:
# Simple bashrc method to launch anything in terminal from any directory YOURCOMMAND () { cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT }
Como puede ver, primero usa el comando 'cd' simple y le da el directorio de la ubicación de los scripts, luego use '&&' para que pueda ejecutar el siguiente comando inmediatamente después, y finalmente abra su script tal como lo haría ¡normalmente! ¡Súper fácil y guardado directamente en su archivo .bash! :)
¡Espero haber ayudado a alguien!
Sinceramente,
AnónimoX
fuente
Al usar bash shell, escriba ese script como función y luego colóquelo en .bashrc o obtenga el archivo que contiene esa función por "source file_name"
Ahora ejecute el script mediante una llamada a la función en el shell.
fuente
O guardarlo en
/usr/bin
(o en cualquier otro directorio presentePATH
) o editarloPATH
para incluir el directorio en el que lo guardó básicamente hará que se ejecute en cualquier directorio.fuente
/usr/bin
se puede vaciar y reemplazar completamente durante una actualización del sistema operativo, haciendo que su script desaparezca misteriosamente./usr/local/bin
es para este propósito, como lo menciona Bryan Oakley. Consulte también el Estándar de jerarquíadesde el directorio de trabajo de 'script.sh' "mv [script.sh] / usr / local / bin" (no probado pero parece ser la forma menos compleja en mi opinión).
fuente
sudo mv script.sh /usr/local/bin
, ya que ese directorio no se puede escribir sin aumentar los privilegios.Debería ponerlo en el directorio ejecutable global de su máquina. Creo que normalmente sería
/usr/bin
en sistemas operativos basados en Unix (sin embargo, esto a menudo requeriría privilegios de superusuario en esa máquina).También podría ponerlo en cualquier otro directorio que esté en la
$PATH
variable de entorno, aunque solo funcionaría para aquellos usuarios que tengan ese directorio en esa variable.Puede encontrar el valor de
$PATH
escribiendoecho $PATH
en un shell. Los directorios están separados por:
.fuente