7 votos

Alias para todos los usuarios

He creado un archivo: /etc/profile.d/pycharm_alias.sh

startPyCharm() {...

}

alias py=startPyCharm

He reiniciado el PC, pero luego el alias no está disponible:

===> alias
...empty

Si me conecto a la PC a través de ssh el alias está disponible:

===> ssh root@localhost
..
root@pc:~# alias
alias py='startPyCharm'

Cómo hacer un alias disponible para todos los usuarios de un sistema linux ubuntu?

Hacemos uso de la shell bash.

3voto

stratus Puntos 114

Usted puede tratar de poner esto en /etc/bash.bashrc. Es propósito declarado es # System-wide .bashrc file for interactive bash(1) shells. Que parece que puede ser lo que usted desea. Estoy sorprendido de que su perfil.d solución no funciona.

1voto

Rufo Puntos 121
  • Creo alias están destinados a uso personal (y debe residir en cada usuario ~/.bashrc archivo).

  • Hacer un shellscript y ponerlo en un directorio, el que está en "el camino de todos".

    • Pero es importante tener cuidado para evitar la sobreescritura de los programas existentes o poner programas existentes en la sombra. Usted puede poner el shellscript antes de un programa ya existente en la ruta, de modo que el sistema no va a encontrar a través de PATH.

      En otras palabras, asegúrese de que el nombre es único para evitar problemas con otros programas.


Este es mi camino en Lubuntu 18.04.x LTS.

$ echo $PATH
/home/sudodus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/games

Tengo una propia bin directorio, el cual es automáticamente encontrar y poner en el comienzo de la ruta (con prioridad más alta). Pero el resto de la ruta es estándar.

Me permito sugerir que usted

  • compruebe que no debería haber ningún conflicto con el nombre de

    which unique-name  # if known but not installed, you get a hint about it
    apt-cache policy *unique-name*  # package name (may or may not be same as program name)
    
  • si no hay conflicto, crear un shellscript (este es un ejemplo trivial)

    echo 'echo "Hello World"' > unique-name
    
  • hacer el shellscript ejecutable

    chmod +x unique-name
    
  • poner el shellscript en /usr/local/sbin si necesita privilegios de root o de otra manera en /usr/local/bin.

    sudo cp -i unique-name /usr/local/bin
    

    La opción -i le pide que si el nombre ya existe en el directorio de destino.

1voto

WinEunuuchs2Unix Puntos 1032

En la actualidad tiene /etc/profile.d/pycharm_alias.sh que contiene:

startPyCharm() {...

}

alias py=startPyCharm

Sin embargo asignar un alias que no volver a definir un comando no es necesario. Tomemos por ejemplo esta comunes alias:

$ alias ll
alias ll='ls -alF'

El ll alias redefine el ls de comandos con argumentos -alF. En la aplicación de la py alias no redefinir StartPyCharm función con nuevos argumentos. Como tal, me gustaría crear una función llamada py en lugar de uno llamado StartPyCharm.

Crear /etc/profile.d/py.sh que contiene:

#!/bin/bash

py () {
    echo "Running py function in /etc/profile.d/py.sh"
    echo "Substitute for py alias which calls StartPyCharm function"
}

export -f py

Por supuesto reemplazar el echo comandos con el contenido de la actual StartPyCharm función.

Ahora, cuando un usuario inicia sesión y abre el shell se puede escribir py y la meta deseada es alcanzada. Es un silencio punto de saber si una función o alias se va a ejecutar. Para ver todas las funciones de uso declare -F


¿Por qué el alias no funciona

La mejor razón el alias de no trabajo se describe aquí:

El método en esta respuesta no debe ser utilizado. Alias en .sharchivos en /etc/profile.d/ (o /etc/profile) será definido sólo para inicio de sesión de conchas y ellos no van a trabajar en interactiva no shells de inicio de sesión. A diferencia de las variables de entorno, bash no se puede exportar alias para niño los procesos, ni siquiera niño bash conchas. Este método puede parecer que funciona correctamente si sólo se prueba en inicio de sesión de conchas, tales como el original shell obtenida al entrar en una consola virtual o a través de SSH, pero es falla en su hijo conchas y también falla en conchas iniciado por GUI terminal de windows. – Eliah Kagan Abr 18 '15 a las 0:56

0voto

user42348 Puntos 780

¿Por qué quieres un alias para todos los usuarios?

¿Por qué no crear un script ejecutable?

Una secuencia de comandos es más sencillo y puede ser usado en todos los shell, no sólo bash.

Al menos en mi caso, mediante una secuencia de comandos en lugar de un alias resuelto mi problema.

Por CIERTO: Esto es sólo una sugerencia, no una solución real a la pregunta.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: