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 esls -l
entonces debe utilizar un alias en su lugar. Estableceralias 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.1 votos
Un par de cosas... Realmente no hay necesidad de utilizar una extensión en el shell scripts Por ejemplo
ll.sh
simplemente tiene que serll
. Tengo un directorio separado en el que pongo todos mis scripts y añado el nombre de ese directorio al$PATH
. Tengo 150 scripts que he escrito en ese directorio y ninguno tiene una extensión y sin embargo todos son ejecutables. Algunos incluso tienen enlaces simbólicos (no Alaises del Finder, y no debe confundirse con alias de bash ) a nombres más cortos para teclear en el Terminal por comodidad. De esta manera todos mis scripts están más localizados y no se mezclan con los ejecutables del sistema.0 votos
¿Puedes por favor añadir el script completo a la pregunta? Y la salida de
ls -l /usr/bin/ll
?0 votos
La Convención garantizaría que la trayectoria del sistema
getconf PATH
sólo es modificado por el proveedor, independientemente del SIP. Tampoco se podría añadir scripts que alteren el entorno del shell a su PATH. Sistema amplio "scripts" (sin shebang y con origen en un archivo rc del shell) pertenecen a /etc y los "scripts" del usuario pertenecen a su carpeta de inicio.0 votos
Mi hipótesis sigue siendo que hay algo mal en el propio script. Pero mientras no lo incluyas en el texto de tu pregunta no podremos verificarlo. De todos modos, usar alias (o funciones de shell) es la mejor solución.