2011-02-10 15 views

Odpowiedz

79

Dodaj source /whatever/file (lub . /whatever/file) do .bashrc, gdzie chcesz dołączyć drugi plik.

+16

Należy poradzić nieistnienie wdziękiem. np. albo sprawdź istnienie (test -r ścieżka i ścieżka) lub zignoruj ​​błędy (. ścieżka 2>/dev/null) –

+1

@William Pursell IMO łatwiej jest raz przetestować, a następnie napisać kod dla przypadków, których 99,99% nigdy się nie zdarzyło . – Daniel

+3

@Daniel Nie zgadzam się. Rzeczy, które się zdarzają .01% czasu może wystąpić tysiące razy na sekundę. A posiadanie .bashrc na NFS zamontowanym na $ HOME może oznaczać, że wskaźnik awaryjności pozyskiwania pliku jest znacznie wyższy niż .01% –

28

Aby zapobiec błędom, należy najpierw sprawdzić, czy plik istnieje. Następnie pobierz plik. Zrób coś takiego.

# include .bashrc if it exists 
if [ -f $HOME/.bashrc_aliases ]; then 
    . $HOME/.bashrc_aliases 
fi 
+3

również na końcu pliku .bashrc_aliases lub jakiegokolwiek innego pliku, który pozyskuję, brzmi następująco: echo "Aliasy załadowane" – Nick

+1

Pomyślałem sobie: "~ jest $ HOME, prawda?" Niestety, 'if [-f ~/.bashrc_aliases];' nie działa. – modle13

2

Jeśli masz wiele plików, które chcesz załadować, ale mogą one nie istnieć, możesz je nieco elegancko za pomocą pętli for.

files=(somefile1 somefile2) 
path="$HOME/path/to/dir/containing/files/" 
for file in ${files[@]} 
do 
    file_to_load=$path$file 
    if [ -f "$file_to_load" ]; 
    then 
     . $file_to_load 
     echo "loaded $file_to_load" 
    fi 
done 

Wyjście wyglądałby następująco:

$ . ~/.bashrc 
loaded $HOME/path/to/dir/containing/files/somefile1 
loaded $HOME/path/to/dir/containing/files/somefile2 
+0

Na pewno nie musisz ponownie sprawdzać istnienia pliku wewnątrz pętli? (Jeśli nie masz bardzo dynamicznej listy plików na dysku) –

+0

Istnieje tylko jeden sprawdzian istnienia pliku. Jeśli twoje obecne środowisko pracy nie ma pliku opisanego na liście, spowoduje to po prostu błąd przy ładowaniu tego pliku i wygeneruje szum wizualny. Bardziej idealnym podejściem byłoby uzyskanie listy plików, a następnie przechodzenie przez nią, zamiast definiowania statycznej listy. – modle13

0

Wolę sprawdzić wersję pierwszą i przypisać do zmiennej konfiguracji toru:

if [ -n "${BASH_VERSION}" ]; then 
    filepath="${HOME}/ls_colors/monokai.sh" 
    if [ -f "$filepath" ]; then 
    source "$filepath" 
    fi 
fi 
Powiązane problemy