2011-02-10 3 views

ответ

79

Добавить source /whatever/file (или . /whatever/file) в .bashrc, где вы хотите, чтобы другой файл был включен.

+16

Вы должны обращаться с небытием грациозно. например, проверить существование (test -r path &&. path) или проигнорировать ошибки (путь 2>/dev/null) –

+1

@William Pursell IMO легче проверить один раз, а затем написать код для случаев, что 99,99% никогда не произойдет , – Daniel

+3

@ Даниэль Я не согласен. Вещи, которые происходят 0,01% времени, могут возникать тысячи раз в секунду. И наличие .bashrc в NFS, установленном в $ HOME, может означать, что частота сбоев в поиске файла намного выше, чем 0,01% –

28

Чтобы предотвратить ошибки, необходимо сначала проверить, чтобы убедиться, что файл существует. Затем укажите файл. Сделайте что-нибудь подобное.

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

также в конце .bashrc_aliases или в любом другом файле, который я использую. Я выхожу из выписки, например . echo «Псевдонимы загружены» – Nick

+1

Я подумал про себя: «~ $ HOME, верно?» Увы, 'если [-f ~/.bashrc_aliases];' не работает. – modle13

2

Если у вас есть несколько файлов, которые вы хотите загрузить, которые могут или не могут существовать, вы можете сохранить его несколько элегантно, используя для цикла.

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 

Выходной сигнал будет выглядеть следующим образом:

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

Несомненно, вам не нужно проверять наличие файла внутри цикла? (Если у вас нет очень динамического списка файлов на диске) –

+0

Существует только одна проверка наличия файла. Если в вашей рабочей среде нет файла, описанного в списке, это просто ошибка в загрузке этого файла и создание визуального шума. Более идеальным подходом было бы получить список файлов, а затем выполнить цикл, а не определять статический список. – modle13

0

Я предпочитаю, чтобы проверить версию первого и назначить переменную пути конфигурации:

if [ -n "${BASH_VERSION}" ]; then 
    filepath="${HOME}/ls_colors/monokai.sh" 
    if [ -f "$filepath" ]; then 
    source "$filepath" 
    fi 
fi 
Смежные вопросы