1 votos

Bash script no encontrado El Capitan

He creado un Bash script que simplemente hace ls -l .

En Mavericks y versiones anteriores de OSX simplemente hice un symlink al script y lo puse en el /usr/bin carpeta ( ln -s ll.sh /usr/bin/ll ) y entonces podría ejecutar el script utilizando ll de cualquier carpeta.

Desde la actualización a El Capitán no puedo cargar este script. He desactivado el SIP para poder crear el enlace simbólico y el script es definitivamente ejecutable. La ubicación ( /usr/bin ) está definitivamente en el $PATH e incluso he intentado añadir una ruta al script en el $PATH también.

Nada parece funcionar, todo lo que obtengo es -bash: ll: command not found .

He reiniciado la terminal después de cada actualización del $PATH y he probado source ~/.bash_profile pero ninguno de los dos está haciendo ninguna diferencia.

Editar: También intenté añadir el directorio actual de los scripts al $PATH y eso también daba el mismo error. Al final he puesto un alias a todos mis scripts para que se ejecuten.

0 votos

Cuando ejecutas tu ll.sh ¿funciona?

2 votos

Si todos los ll.sh -script_ está haciendo es ls -l entonces debe utilizar un alias en su lugar. Establecer alias ll='ls -l' en el ~/.profile o ~/.bash_profile cualquiera que sea su uso. Ver 6.6 Alias en el Manual de referencia BASH .

0 votos

Utilicé el ls -l como ejemplo, tengo bastantes scripts que hacen cosas diferentes. Podría hacer un alias para todos ellos pero me preguntaba si la implementación anterior era todavía posible. Si ejecuto el .sh scriptsscriptscripts se ejecuta bien.

4voto

aye Puntos 36

Basta con leer los comentarios para ver que buscas una solución general, más que ese ejemplo concreto. Dejaré mi respuesta anterior por si ayuda a alguien, pero aquí tienes una solución más general.

Mi primer consejo: deja /usr/bin solo. No hay razón para meterse con él y hay muchas razones no para que lo estropee. En su lugar, añada un directorio en otro lugar, ponga sus scripts allí, y añádalo a su $PATH variable. Si quieres esto sólo para tu usuario, podrías crear un scripts o bin en su directorio personal, o si quiere que esté disponible en todo el mundo, puede ponerlo en /usr/local Por ejemplo /usr/local/scripts o /usr/local/bin . Entonces, en el .bashrc en su directorio principal, añada lo siguiente:

export PATH=$PATH:~/scripts:/usr/local/scripts

Si prefiere que sus comandos anulen un comando del sistema (en caso de que tengan el mismo nombre), puede hacer lo siguiente:

export PATH=~/scripts:/usr/local/scripts:$PATH

Si quieres que esto se establezca para todos los usuarios, entonces hay un /etc/bashrc en el que se puede añadir lo anterior.

Para editar el global bashrc o modificar /usr/local necesitas privilegios de Root/admin.

3 votos

Ten en cuenta que /usr/local/bin ya está en el PATH por defecto, así que si pones cosas ahí no tienes que preocuparte de personalizar el PATH.

0 votos

¿No necesita comillas alrededor de la ruta absoluta PATH?

1voto

aye Puntos 36

No estoy seguro de cuál es el problema con su configuración, pero una manera diferente (tal vez mejor) de hacer lo mismo es a través de Bash alias mando. En la línea de comandos, escriba:

alias ll="ls -l"

Entonces sólo tienes que escribir ll y obtener un listado completo. Si desea que esto sea permanente, puede ponerlo en el .bashrc en su directorio principal, que puede crear si no existe ya.

0 votos

También vale la pena señalar que se puede poner un alias al comando en una ubicación de archivo ll=~/scripts/ll.sh que es lo que he acabado haciendo. ¡Gracias por la ayuda!

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X