Wie kann ich Aliase für alle Benutzer voreinstellen?


38

Ich habe Ubuntu 14.04.2. Ich möchte, dass alle Benutzer automatisch einen bestimmten Satz von Aliasen haben. Ich habe meine Aliase in meinem persönlichen .bashrc festgelegt, möchte sie aber nicht manuell in die anderen Benutzer kopieren müssen. Idealerweise sollte dies auch für neu erstellte Benutzer automatisch festgelegt werden.


1
Mit "voreingestellt" meinen Sie, dass alle neuen Benutzer mit bestimmten Aliasnamen erstellt werden sollen, die sie dann einfach neu konfigurieren können? Oder möchten Sie globale Aliase erstellen, sodass alle Benutzer sie jederzeit haben (und sie neu definieren / deren Definition aufheben können ... aber sie nicht sehen, wenn sie ihre eigenen Konfigurationsdateien durchsuchen, die sie möglicherweise finden verwirrend)? Oder etwas anderes? Related: Undertanding .bashrc und .bash_profile (trotz des seltsamen Titels glaube ich, dass diese und diese Frage eigentlich ziemlich ähnlich sind).
Eliah Kagan

Antworten:


50

Sie können ein Skript in erstellen /etc/profile.d/, um Aliase für alle Benutzer zu erstellen :

  1. Erstellen Sie eine Datei mit dem Namen 00-aliases.sh(oder einem anderen ausgefallenen Namen) in /etc/profile.d:

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Fügen Sie Aliase in diese Datei ein. Beispiel:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. Speicher die Datei

  4. Starten Sie alle offenen Terminals neu, um die Änderungen zu übernehmen.
  5. Genießen!

Einige Notizen:

  • /etc/profileist eine globale Datei, die vorher ausgeführt wird ~/.profile.
  • /etc/profile.d/ ist ein Ordner, der Skripte enthält, die von aufgerufen werden /etc/profile
  • Wenn /etc/profileaufgerufen wird (wenn Sie Start / einloggen , um einen Shell), sucht es nach allen Dateien , die auf .shin /etc/profile.d/und führt sie mit einem dieser Befehle ein :

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • Ich setze 00-vor den Dateinamen, damit er vor den restlichen Skripten ausgeführt wird.
  • Sie können auch Ihre Aliase hinzufügen /etc/profile, dies wird jedoch nicht empfohlen.

2
Funktioniert perfekt! Können Sie mir kurz erklären, wozu /etc/profile.d dient?
Brian Sizemore

1
@ BrianSizemore: Ich habe meine Antwort mit ein paar Erklärungen aktualisiert. Haben Sie noch Fragen?
Helio,

1
Das erklärt es sehr gut. Die Klarstellung hilft mir, auch andere Verwendungen zu entwickeln. Danke für all die Hilfe!
Brian Sizemore

4
Die Methode in dieser Antwort sollte nicht verwendet werden. Aliase in .shDateien in /etc/profile.d/(oder /etc/profile) werden nur für Anmeldeshells definiert und funktionieren nicht in interaktiven Shells , die keine Anmeldeshells sind. Im Gegensatz zu Umgebungsvariablen kann bash keine Aliase in untergeordnete Prozesse exportieren, nicht einmal untergeordnete Bash-Shells. Diese Methode scheint ordnungsgemäß zu funktionieren, wenn sie nur in Anmeldeshells getestet wird, z. B. in der ursprünglichen Shell, die durch Anmelden an einer virtuellen Konsole oder über SSH erhalten wurde. Sie schlägt jedoch in ihren untergeordneten Shells und auch in Shells fehl, die von GUI-Terminalfenstern gestartet wurden.
Eliah Kagan

2
@Helio Meine Antwort auf Undertanding .bashrc und .bash_profile enthält je nach Ziel zwei weitere Methoden sowie eine ausführliche Erläuterung. Ich bin mir nicht sicher, ob diese oder jene Frage als Duplikat angesehen werden kann. Ich habe diese Frage kommentiert, um vom OP Klarheit über ihre Bedürfnisse zu erhalten. Diese Frage mehr ist eng scoped , als dass man so ich nehme es in Ordnung sein würde für mich hier eine kurze Antwort zu schreiben dort ein Teil des Materials in meiner langen eine Abdeckung. (Im Moment hoffe ich, eine Antwort des OP auf meinen Kommentar zu erhalten.)
Eliah Kagan,


5

Ein Alias ​​funktioniert nur innerhalb einer Shell. Wenn Sie etwas möchten, das so allgemein zugänglich ist wie eine ausführbare Datei, können Sie ein kleines Verknüpfungsskript hinzufügen /usr/bin, z.

#!/bin/sh
ls -l "$@"

Der "$@"übergibt alle Argumente an die ausführbare Datei. Der Name des Skripts ist der Name der ausführbaren Datei.

Quelle: https://unix.stackexchange.com/a/52509/15954


Diese Antwort scheint nichts miteinander zu tun zu haben. Die akzeptierte Antwort beantwortet die Frage korrekt, während dies eine Problemumgehung zu sein scheint.
Brian Sizemore

3
@BrianSizemore Ich hatte dieselbe Frage, bin aber auf diese Lösung gestoßen, die in meinem Fall angemessener war. hoffentlich hilft es anderen in einer ähnlichen Situation. Für viele Leute ist der Alias ​​in Ordnung.
Jtpereyda

1
@ BrianSizemore Diese Antwort klärt ein häufiges Missverständnis (das ich auch hatte) und ist nützlich und direkt im Zusammenhang.
a20,

0

/ etc / bashrc

  • Systemweite Funktionen und Aliase
  • Umgebungssachen gehen in / etc / profile

Es ist NICHT ratsam, diese Datei zu ändern, es sei denn, Sie wissen, was Sie tun. Es ist viel besser, ein custom.sh-Shell-Skript in /etc/profile.d/ zu erstellen, um benutzerdefinierte Änderungen an Ihrer Umgebung vorzunehmen, da dies das Zusammenführen in zukünftigen Updates unnötig macht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.