Jak stale definiować aliasy w terminalu

18

Chcę dodać aliasy do mojego środowiska, aby były dostępne we wszystkich instancjach terminalu.

Mam odpowiedź :

Tak, możesz umieścić go w swoim .bashrc, .bash_profile lub .profile. W niektórych systemach skrypty inicjujące powłokę również pobierają .bash_aliases lub .aliases, więc jeśli jeden z tych plików istnieje w twoim systemie, warto je użyć.

Ale nie mogę znaleźć żadnego z tych plików.

(Skonfigurowałem OS X, aby zobaczyć ukryte pliki, a jednak nie widzę żadnego z powyższych 4.)

Elad Benda
źródło
Aliasy działają tylko w powłoce (w terminalu), więc co dokładnie rozumiesz przez dodanie aliasów do środowiska OS X? Czy chcesz, aby alias był dostępny dla wszystkich użytkowników?
nohillside
Miałem na myśli, że będzie ustawiony dla każdej instancji terminalu, którą otworzę w przyszłości
Elad Benda
Cofnąłem twoją edycję, ponieważ zmieniła ona cel pytania. Jeśli nadal szukasz odpowiedzi na temat dodawania aliasów do zsh, zadaj nowe pytanie.
nohillside

Odpowiedzi:

23

Jeśli używasz bash, dodaj polecenia aliasu do ~ / .bashrc i zapisz plik taki jak ~ / .bash_profile:

. ~/.bashrc

Gdy bash jest wywoływany jako interaktywna powłoka niezalogowana, czyta .bashrc, ale nie .bash_profile. Kiedy bash jest wywoływany jako interaktywna powłoka logowania, czyta .bash_profile, ale nie .bashrc.

Terminal i iTerm domyślnie otwierają nowe powłoki jako powłoki logowania, więc wielu użytkowników systemu OS X używa pliku .bash_profile jako osobistego pliku konfiguracyjnego. Na przykład tmux i tryb powłoki w Emacsie otwierają nowe powłoki jako powłoki niezalogowane.

.profile jest także odczytywany przez inne powłoki, takie jak ksh. Jeśli istnieją zarówno .bash_profile, jak i .profile, bash czyta .bash_profile tylko wtedy, gdy jest wywoływany jako interaktywna powłoka logowania.

Zobacz https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html aby uzyskać więcej informacji.

Lri
źródło
3
@EladBenda Jeśli używasz zsh, dodaj polecenia aliasu do ~/.zshrc. ~/.zshrcjest odczytywany zarówno przez (nieinteraktywne) powłoki niezalogowane, jak i powłoki logowania, więc nie musisz ich pozyskiwać ~/.zprofile.
Lri
Zawsze chciałem poznać różnicę między .bash_profile i .bashrc, teraz wiem. Dzięki.
Deesbek
Lepszą opcją jest zachowanie aliasów w pliku o nazwie ~ / .aliases, jeśli używasz oh-my-zsh. Jeśli ten plik nie istnieje, można go dodać do folderu domowego i byłby plikiem ukrytym.
Anusha,
6

Otwórz nowe okno terminala i przejdź do katalogu domowego (po prostu wpisz cdi naciśnij Enter).

Następnie wpisz ls .bash*i ls .profile(zwróć uwagę, że każda z tych nazw plików zaczyna się od kropki). Jeśli masz te pliki (i powinieneś mieć przynajmniej plik .profile), musisz je edytować i dodać do nich swoje aliasy. Używam VI (lub VIM) do edycji tych plików, ale możesz użyć innego edytora (w rzeczywistości wpisanie w oknie terminala open .bash_profileotworzy go w TextEditor, który może być nieco bardziej przyjazny dla użytkownika, jeśli nie znasz VI) . Jeśli z jakiegoś powodu nie masz żadnego z tych plików, utwórz nowy (i nazwij go .bashrc), dodaj do niego swoje linie aliasów (będzie to jedno polecenie w wierszu, tak jakbyś je wpisał) w powłoce), a następnie zapisz plik. Następnie możesz utworzyć dowiązania symboliczne do .bash_profile i .profile za pomocą ln -s .bashrc .bash_profile; ln -s .bashrc .profile.

Zazwyczaj robię dowiązania symboliczne .bashrc i .bash_profile do .profile, a potem muszę się martwić tylko o jeden plik.

Różnica między tymi plikami polega na tym, że bash będzie pobierał różne pliki w zależności od tego, czy został on uruchomiony jako powłoka logowania (zwykle proces logowania uruchamia powłokę jako powłokę logowania), czy tylko jako interaktywną (ale nie zalogowaną) powłokę, lub nieinteraktywna powłoka. Posiadanie wszystkich trzech plików w zasadzie takich samych daje mi spójne środowisko bez względu na to, jak zaczął się bash.

W ten sposób uzyskasz więcej informacji man bash, ale bądź przygotowany, to długa strona podręcznika. Będziesz mógł zobaczyć, który z trzech plików (.bashrc, .profile i .bash_profile) jest pozyskiwany w zależności od trybu, w którym uruchomiono bash.

Mam nadzieję, że to pomoże - jeśli nie, daj mi krzyk.

mikrofon
źródło
3

Wprowadź następujące polecenia w terminalu:

cd /etc
sudo vi bashrc

dodaj następujące elementy:

alias ll="ls -lrt"

Na koniec uruchom ponownie Terminal.

użytkownik172265
źródło
2

Jeśli potrzebujesz tego urządzenia, musisz zajrzeć do /etcfolderu. Jednak mogą one nie istnieć domyślnie, w takim przypadku wystarczy je utworzyć w powyższym folderze i zrestartować terminal. Najprawdopodobniej będziesz musiał ich użyć, sudoponieważ /etcfolder jest własnością root.

Jeśli potrzebujesz tego dla każdego otwieranego terminalu, nie musisz tego robić na maszynie. Możesz utworzyć te pliki we własnym folderze domowym i będą one odczytywane przez terminal za każdym razem, gdy zaczynasz sesję terminala.

Również, jak wspomniano w komentarzach, na ogół będzie można je zobaczyć tylko za pomocą terminala i za pomocą ls -lha.

BinaryMisfit
źródło
0

jeśli masz zainstalowany ruby, sprawdź ten skrypt ruby https://github.com/ytbryan/aka

Skrypt zapewnia takie funkcje, jak trwałość i automatyczne pobieranie pliku kropkowego. Możesz zarządzać aliasami przez terminal bez przerywania pracy i otwierać edytor tekstu.

zrzeczenie się odpowiedzialności: Napisałem ten skrypt i używam go codziennie. Daj mi znać, jeśli jest jakiś błąd / pomysł. :)

ytbryan
źródło
0

Dla tych, którzy szukają komendy ll jak w Linux BASH, jest ona tworzona w ten sposób ...

alias ll="ls -laF"

Dodaj tę linię do .bashrcpliku, a następnie zduplikuj .bashrcplik jako .bash_profile, a będziesz mieć zawsze i na zawsze.

Dla tego, co jest warte, na Linuksie BASH to tylko alias „ ls -laF”.

Phillip H. Blanton
źródło
-2

miałem ten sam problem, że nie miałem pliku .bash ani .profile w mojej lokalizacji Profile. w końcu znalazłem to w / etc

Leo Boulanger
źródło
1
/ etc jest używany w całym systemie. Zdecydowanie zalecamy, aby nie edytować tych plików, ale zamiast tego używać własnych plików profilu w folderze domowym, np. ~ / .Bash_profile.
grg
nie widzę profilu ~ / .bash_profile, to była pierwsza rzecz, którą próbowałem i jeśli go utworzę, nie jest używany nawet po restarcie, wierzę, że moi administratorzy musieli temu zapobiec. używam teraz zsh i .zshrc działa dobrze
Leo Boulanger