Mam funkcję, która konwertuje czas epoki do tej pory. Oto definicja
date1(){
date -d @$1
}
Chciałbym móc pisać:
$ date1 xxxyyy
Gdzie xxxyyy to parametr, który przekazuję do mojej funkcji, aby uzyskać odpowiednią datę. Rozumiem, że trzeba dodać go albo .bash_profile
, .profile
lub .bashrc
, a następnie pozyskać go:
$ source file
Ale nie jestem pewien, w którym pliku go umieścić. Obecnie go mam .profile
. Ale żeby go uruchomić, muszę to robić za source .profile
każdym razem.
Najlepiej byłoby, gdyby był dostępny, gdy komputer uruchamia się jak zmienna środowiskowa.
Odpowiedzi:
Od
man bash
:Innymi słowy, można umieścić go w dowolnym
~/.bash_profile
,~/.bash_login
lub~/.profile
, czy wszystkie plikisource
byłyby przez jedną z tych . Zazwyczaj~/.profile
źródło~/.bashrc
, które jest „osobistym plikiem inicjującym, wykonywanym dla powłok logowania”.Aby ją włączyć, uruchom nową powłokę, uruchom
exec $SHELL
lub uruchomsource ~/.bashrc
.źródło
.bash_profile
to również muszę to robićsource ~/.bash_profile
za każdym razem, gdy otwieram terminal skrótemCtrl+Alt+T
.source ~/.bash_profile
każdym razem, oznacza to, że twoja konfiguracja Bash jest w jakiś sposób niestandardowa lub zepsuta (jakman bash
wspomniano na wyjściu). Czy na pewno używasz Bash? Na przykład, czyecho $BASHPID
coś drukuje?#!/bin/sh
na górze,.profile
aby zdefiniować funkcję?Po zdefiniowaniu funkcji w swoim
.profile
dodajexport -f date1
. Spowoduje to wyeksportowanie funkcji do użycia przez powłokę logowania.źródło
Wprowadzane są dostosowania interaktywnych powłok
~/.bashrc
. Do rzeczy, które chcesz uruchomić po zalogowaniu, przechodzą~/.profile
(lub~/.bash_profile
, ale często nie są ładowane przy logowaniu).Umieść tę definicję funkcji w
~/.bashrc
.Ponieważ bash nie ładuje się,
.bashrc
gdy jest powłoką logowania, zmuś go do tego: napisz~/.bash_profile
zawierającytzn. ładuj
~/.profile
, a także ładuj,~/.bashrc
jeśli powłoka jest interaktywna.Zobacz Alternatywa dla .bashrc i posty tam połączone.
źródło
csh i tcsh nie obsługują funkcji takich jak bash, ale możesz to zrobić.
Na przykład tutaj jest prosta funkcja do drukowania tekstu
przekazywanie argumentów do skryptu
robienie kodu wieloliniowego jak instrukcja if jest dość skomplikowane, ale proszę bardzo.
nadal będziesz musiał ewaluować, ale najbardziej złożoną częścią jest wykonywanie
\!:[x]
składni w celu uzyskania danych wejściowych z wiersza poleceń.To powinno wystarczyć, żebyś się załatwił.
źródło
Możesz przekierować wszystkie bieżące funkcje do bashrc za pomocą składu .
Na przykład oto, jak dodam funkcję polecenia openstack z opcjonalnym parametrem do bashrc:
Teraz jest zapisywany na przyszłe sesje i może być używany w następujący sposób:
lub
źródło
punkt 18: W mojej starszej pamięci, kiedy administrator, nauka ksh i bash była kinem na odwrót. 1: - / etc / zawartość profilu są sysWide. / etc / skel zawierał plik przekazany nowym kontom. Ponieważ Bash jest teraz wspólny dla wszystkich dystrybucji. następny będzie 2: - ~ / .profile jako standard systemowy, a następnie w ramach .profile „jeśli istnieje” .bash_profile umieści -> 3: - .bash_profile 4: - .bash_login 5: -. bashrc .bash_aliases będzie w Moim zdaniem, bardziej poprawna kolejność, konfiguracja standardowego środowiska Terminal i Shell oraz zwykłe .bash_login nigdy nie znaleziono lub nie istnieje (jest to niestandardowe dla użytkownika). Z .profile $ PATH jest głównym jeśli.
Zauważyłem, że dodałem też .bash_profile .profile wciąż dominuje i nie szanuje obecności .bash_profile. Oprócz informacji w nagłówku nikt się nie aktualizuje, np .: uruchomienie bash Próbki - ta struktura katalogów już nie istnieje - wraz z przykładami i / lub plikami są gzip. Więc aktualizacja Gnu-Bash jest w porządku
źródło