Alternativa no sudo a / usr / local / bin para scripts comunes


16

Estoy acostumbrado a poner scripts comunes /usr/local/binpara poder ejecutarlos desde cualquier lugar con el terminal.

Por ejemplo, creo un script de shell llamado 1, lo hago ejecutable chmod +x 1y lo pongo /usr/local/bin, y dentro del script escribo #!/bin/shen la primera línea, y luego mis comandos. A partir de ahí, es muy conveniente de usar y rápido de ejecutar escribiendo

1Enter

en la terminal, desde cualquier carpeta.

Mi problema es que actualmente estoy trabajando en una computadora donde no puedo hacerlo sudoy tampoco puedo esperar obtenerlo, así que no puedo colocar mi script /usr/local/bin.

¿Cuáles son mis opciones? ¿Hay otra ruta con la misma capacidad de "ejecutar desde cualquier lugar", a la que puedo acceder sin sudouna manera u otra para lograr algo equivalente?

La respuesta aceptada a esta publicación dice

Para los scripts de ámbito de usuario, use bin / en su directorio de inicio.

Lo intenté, pero no hay una bincarpeta en mi directorio de inicio, y cuando creé una, todavía no podía ejecutar el script desde ningún otro lado.

Estoy corriendo en Ubuntu 12.04 LTS.


2
No use 1 o algo así como nombre de script. Intente calcular algo en su shell: por ejemplo, expr 1 + 1 (y si no lo está haciendo, algún script lo hará con seguridad en algún momento)
desde el

1
@frlan: ¿Cómo se expr 1 + 1vería afectado por la presencia de un script llamado 1?
Salidas del

Es cierto ... no afecta expr, ni aritmética bash $(( 1 + 1 )).
Campa

Respuestas:


19

¿Cuáles son mis opciones? ¿Hay otra ruta con la misma capacidad de "ejecutar desde cualquier lugar", a la que pueda acceder sin sudo, u otra forma de lograr algo equivalente?

¿Cómo hacerlo?

Cree un directorio en su hogar para guardar sus scripts normalmente nombrados bincomo convención.

mkdir ~/bin

Ahora mueve tus scripts a bin

mv somescript ~/bin

¡¿Ahora cómo hacer que se ajuste desde todas partes ?!

Tienes que agregar el bina la RUTA

abre tu .bashrc

gedit .bashrc

y agrega esta línea:

export PATH=$PATH:/home/username/bin

No olvides reemplazarlo usernamecon tu nombre de usuario

Guarde y salga, luego obtenga el bashrc

source .bashrc

y ahora está bien, ¡puede ejecutar su script como solía hacerlo! pero debe notar que esto está relacionado solo con su usuario.

Nota: es mejor cambiar el nombre de sus scripts que no sean 1, 2, ya que puede enfrentar algunos problemas con esos nombres


ACTUALIZAR:

Puede hacer lo mismo, simplemente cree el directorio bin en su hogar y luego en source ~/.profilelugar de hacerlo ~/.bashrc. Dado que agregar el ~ / bin a su RUTA ya aparece en.profile

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Lo uso export PATH=$PATH:$HOME/binpara poder usar el mismo bashrc para otras cuentas con diferentes nombres de usuario.
Anthony G - justicia para Monica

1
Solo mencionar que ~/bin está $PATHpor defecto en Ubuntu. Simplemente ejecute source ~/.profileo cierre sesión / inicie sesión después de crear el directorio.
Jacob Vlijm

@JacobVlijm ¿En qué versión? Uso 12.04, 14.04, 15.04 y ninguno de ellos tiene ~ / bin en PATH
Maythux

En todos ellos, siempre lo uso, en muchas de mis respuestas (aceptadas) también, nunca recibí ningún comentario al respecto, la trabaja en casa también en cinco sistemas, pero, como dije, después de correr source ~/.profile. Ver (por ejemplo) aquí: askubuntu.com/a/247422/72216
Jacob Vlijm

1
Dijo fuente ~/.profile, nunca dijo fuente ~/.bashrc. :) También, como regla general, las variables ambientales deben ir en .profiley no .bashrcya que sólo hay que configurar una vez. (nada de esto es para decir que tu respuesta no es buena, eso sí, y +1 de mi parte)
terdon

4

Además de /ubuntu//a/643030/218015 , también puede definir un alias dentro de su .bashrc para tareas pequeñas y de uso frecuente. P.ej

alias ll='ls -l'
alias ls='ls --color=auto'

creará un "comando" ll, que está haciendo ls -l y ls se coloreará después de definir el alias. https://wiki.ubuntuusers.de/alias tiene algunos ejemplos más y un tutorial para configurarlo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.