Jak mogę wstępnie ustawić aliasy dla wszystkich użytkowników?

38

Mam Ubuntu 14.04.2. Chcę, aby wszyscy użytkownicy automatycznie mieli określony zestaw aliasów. Mam swoje aliasy w moim osobistym pliku .bashrc, ale nie chcę ręcznie kopiować ich do innych użytkowników. Najlepiej byłoby automatycznie ustawić je również dla nowo utworzonych użytkowników.

Brian Sizemore
źródło
1
Mówiąc „wstępnie”, czy masz na myśli, że chcesz, aby wszyscy nowi użytkownicy byli tworzeni przy użyciu określonych aliasów, które następnie mogą łatwo zmienić? Czy oznacza to, że chcesz utworzyć globalne aliasy, tak aby wszyscy użytkownicy mieli je cały czas (i byli w stanie je przedefiniować / zdefiniować ... ale nie widzieć ich, gdy przeglądają własne pliki konfiguracyjne, które mogą znaleźć befuddling)? Albo coś innego? Powiązane: Undertanding .bashrc i .bash_profile (pomimo nieparzystego tytułu, uważam, że to pytanie i to w rzeczywistości są całkiem podobne).
Eliah Kagan

Odpowiedzi:

50

Możesz utworzyć skrypt, /etc/profile.d/aby tworzyć aliasy dla wszystkich użytkowników:

  1. Utwórz plik o nazwie 00-aliases.sh(lub innej wymyślnej nazwie) w /etc/profile.d:

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Umieść ci aliasy w tym pliku. Przykład:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. Zapisz plik

  4. Uruchom ponownie wszystkie otwarte terminale, aby zastosować zmiany.
  5. Cieszyć się!

Niektóre uwagi:

  • /etc/profileto plik globalny, który jest uruchamiany wcześniej ~/.profile.
  • /etc/profile.d/ to folder zawierający skrypty wywoływane przez /etc/profile
  • Kiedy /etc/profilejest wywoływany (po uruchomieniu / zalogowaniu się powłoki), wyszukuje pliki kończące się .shna /etc/profile.d/i uruchamia je za pomocą jednego z następujących poleceń:

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • Stawiam 00-przed nazwą pliku, aby była wykonywana przed resztą skryptów.
  • Możesz także dodać swoje aliasy /etc/profile, ale nie jest to zalecane.
Helio
źródło
2
Działa świetnie! Czy możesz mi krótko wyjaśnić, jaki jest cel /etc/profile.d?
Brian Sizemore,
1
@BrianSizemore: Zaktualizowałem swoją odpowiedź kilkoma wyjaśnieniami. Czy masz jeszcze jakieś zapytanie?
Helio
1
To wyjaśnia to bardzo dobrze. Wyjaśnienie pomaga mi również rozwijać inne zastosowania. Dzięki za wszelką pomoc!
Brian Sizemore,
4
Nie należy stosować metody opisanej w tej odpowiedzi. Aliasy w .shplikach w /etc/profile.d/(lub /etc/profile) zostaną zdefiniowane tylko dla powłok logowania i nie będą działać w interaktywnych powłokach bez logowania. W przeciwieństwie do zmiennych środowiskowych, bash nie może eksportować aliasów do procesów potomnych, nawet powłok potomnych bash. Ta metoda może wydawać się działać poprawnie, jeśli jest testowana tylko w powłokach logowania, takich jak oryginalna powłoka uzyskana po zalogowaniu się w konsoli wirtualnej lub za pośrednictwem SSH, ale zawodzi w powłokach potomnych, a także w powłokach uruchamianych przez okna terminala GUI.
Eliah Kagan
2
@Helio Moja odpowiedź na Undertanding .bashrc i .bash_profile podaje dwie inne metody, w zależności od celu, wraz ze szczegółowym wyjaśnieniem. Nie jestem pewien, czy to lub inne pytanie można uznać za duplikat. Skomentowałem to pytanie, aby uzyskać od OP wyjaśnienie na temat ich potrzeb. To pytanie ma bardziej zawężony zakres niż to, więc przypuszczam, że byłoby dobrze, gdybym opublikował tutaj krótką odpowiedź obejmującą część materiału z mojego długiego. (Na razie mam nadzieję, że OP otrzyma odpowiedź na mój komentarz).
Eliah Kagan
5

Alias ​​będzie działał tylko w powłoce. Jeśli chcesz czegoś tak powszechnie dostępnego jak plik wykonywalny, możesz dodać mały skrypt skrótu /usr/bin, np .:

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

"$@"Przechodzi przez wszystkie argumenty do pliku wykonywalnego. Nazwa skryptu będzie nazwą pliku wykonywalnego.

Źródło: https://unix.stackexchange.com/a/52509/15954

jtpereyda
źródło
Ta odpowiedź wydaje się niezwiązana. Przyjęta odpowiedź poprawnie odpowiada na pytanie, podczas gdy wydaje się, że zapewnia to obejście problemu.
Brian Sizemore,
3
@BrianSizemore Miałem to samo pytanie, ale natknąłem się na to rozwiązanie, które było bardziej odpowiednie w moim przypadku; mam nadzieję, że pomoże to innym w podobnej sytuacji. Dla wielu osób alias będzie w porządku.
jtpereyda
1
@BrianSizemore Ta odpowiedź wyjaśnia powszechne nieporozumienia (które miałem również) i jest użyteczna i bezpośrednio powiązana.
a20
0

/ etc / bashrc

  • Funkcje i aliasy dla całego systemu
  • Informacje o środowisku znajdują się w / etc / profile

Zmiana tego pliku NIE jest dobrym pomysłem, chyba że wiesz, co robisz. O wiele lepiej jest utworzyć skrypt powłoki custom.sh w /etc/profile.d/, aby wprowadzić niestandardowe zmiany w środowisku, ponieważ zapobiegnie to konieczności scalania w przyszłych aktualizacjach.

CentoS
źródło