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

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

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

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

1Enter

en el terminal, desde dentro de cualquier carpeta.

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

¿Cuáles son mis opciones? ¿Existe 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?

La respuesta aceptada aesta publicacióndice

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

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

Estoy ejecutando Ubuntu 12.04 LTS.

Respuesta1

¿Cuáles son mis opciones? ¿Existe 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 algún directorio en su hogar para contener sus scripts normalmente nombrados según la binconvención.

mkdir ~/bin

Ahora mueve tus scripts a la papelera

mv somescript ~/bin

¡¿Ahora cómo hacerlo 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 olvide reemplazar usernamecon su nombre de usuario

Guarde y salga, luego obtenga el bashrc

source .bashrc

y ahora estás bien, ¡puedes ejecutar tu script como solías hacerlo! pero debes tener en cuenta que esto está relacionado únicamente con tu usuario.

Nota: Es mejor cambiar el nombre de sus scripts a otro que no sea 1, 2, ya que puede tener algunos problemas con esos nombres.


ACTUALIZAR:

Puede hacer lo mismo, simplemente cree el directorio bin en su casa y luego source ~/.profileen lugar de ~/.bashrc. Dado que agregar ~/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

Respuesta2

Además dehttps://askubuntu.com/a/643030/218015Tambié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'

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

Respuesta3

Intentar ~/.local/bin/.

(Reconozco que esta respuesta no agrega nada nuevo, pero hay una respuesta breve a esta pregunta que no debería requerir leer todo lo demás).

Respuesta4

Realmente debería haber un contenedor por usuario porque sería muy útil en entornos multiusuario, donde a las personas se les niegan los privilegios de root para que todos estén más seguros. Utilice lo siguiente en un script bash para crearlo automáticamente.

if [ ! -d "$HOME/.local/bin" ] ; then
  mkdir -p "$HOME/.local/bin"
  printf '\nexport "PATH=$PATH:'"$HOME"/.local/bin'"' >> "$HOME/.bashrc"
  # Change the PATH right now:
  PATH="$PATH:$HOME/.local/bin"
fi

información relacionada