2011-02-10 3 views

Trả lời

79

Thêm source /whatever/file (hoặc . /whatever/file) vào .bashrc nơi bạn muốn tệp khác đi kèm.

+16

Bạn nên xử lý không tồn tại một cách duyên dáng. Ví dụ, kiểm tra sự tồn tại (đường dẫn -r và đường dẫn.) hoặc bỏ qua lỗi (đường dẫn 2>/dev/null) –

+1

@William Pursell IMO dễ dàng hơn để kiểm tra một lần, sau đó viết mã cho các trường hợp, 99,99% không bao giờ xảy ra . – Daniel

+3

@Daniel Tôi không đồng ý. Những điều xảy ra .01% thời gian có thể xảy ra hàng nghìn lần mỗi giây. Và có một .bashrc trên một NFS gắn $ HOME có thể có nghĩa là tỷ lệ thất bại của tìm nguồn cung cấp tệp cao hơn nhiều .01% –

28

Để ngăn lỗi bạn cần kiểm tra trước để đảm bảo tệp tồn tại. Sau đó, nguồn tập tin. Làm một cái gì đó như thế này.

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

cũng ở cuối .bashrc_aliases hoặc bất kỳ tệp nào tôi tìm nguồn cung cấp, tôi lặp lại một tuyên bố như echo "Bí danh được tải" – Nick

+1

Tôi tự nghĩ: "~ là $ HOME, đúng không?" Than ôi, 'if [-f ~/.bashrc_aliases];' không hoạt động. – modle13

2

Nếu bạn có nhiều tệp bạn muốn tải có thể tồn tại hoặc không tồn tại, bạn có thể giữ cho nó hơi thanh lịch bằng cách sử dụng vòng lặp 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 

Kết quả sẽ như thế nào:

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

Chắc chắn bạn không cần phải kiểm tra sự tồn tại của tệp một lần nữa trong vòng lặp? (Trừ khi bạn có danh sách tệp rất động trên đĩa) –

+0

Chỉ có một kiểm tra cho sự tồn tại của tệp. Nếu môi trường làm việc hiện tại của bạn không có tệp được mô tả trong danh sách, nó sẽ chỉ đơn giản là lỗi trên tải tệp đó và tạo ra tiếng ồn trực quan. Một cách tiếp cận lý tưởng hơn là lấy danh sách các tệp, sau đó lặp lại thông tin đó, thay vì xác định danh sách tĩnh. – modle13

0

tôi thích để kiểm tra phiên bản đầu tiên và gán biến cho con đường config:

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