Chuyển đến nội dung chính

Dotfiles là gì? Hướng dẫn đầy đủ về cách dùng và lợi ích

Học cách quản lý dotfiles để có cấu hình nhất quán giữa các hệ thống và cải thiện quy trình làm việc. Đảm bảo khả năng tương thích với các hệ thống dựa trên Unix.
· 9 phút đọc

Khám phá cùng AI

Dotfiles—những tệp cấu hình ẩn nằm trong hệ thống của bạn—là công cụ thiết yếu cho nhà phát triển phần mềm, cho phép tùy biến môi trường và quy trình làm việc. Bài viết này giới thiệu dotfiles, lý do chúng hữu ích, và hướng dẫn bạn tạo, quản lý, cũng như kiểm soát phiên bản dotfiles của mình.

Hiểu về dotfiles chỉ là một trong nhiều kỹ năng bạn cần với tư cách nhà phát triển. Nếu bạn mới bắt đầu, theo học lộ trình nghề nghiệp Associate Python Developer của DataCamp có thể giúp bạn xây dựng kỹ năng Python và phát triển phần mềm. Nếu đã có chút kinh nghiệm, lộ trình Python Developer đi sâu vào các thực hành nâng cao hơn, như dùng pytest để kiểm thử mã.

Tìm hiểu Dotfiles

Hãy dành một phút để hiểu dotfiles về mặt khái niệm rồi xem các ví dụ cụ thể.

Dotfiles là gì?

Dotfiles là các tệp cấu hình ẩn trên hệ thống dựa trên Unix, mặc định bị ẩn do có tiền tố đặc biệt (.). Những tệp này lưu trữ cấu hình, thiết lập và ưu tiên cho ứng dụng, công cụ như hệ thống kiểm soát phiên bản và trình soạn thảo. Chúng giúp nhà phát triển dễ dàng tạo môi trường tùy biến phù hợp với quy trình làm việc của mình.

Bạn có thể quản lý và chia sẻ dotfiles giữa các máy khác nhau thông qua kiểm soát phiên bản. Bạn cũng có thể chia sẻ các dotfiles này để tăng năng suất và chia sẻ các alias, script, và cấu hình hữu ích.

Ví dụ về các dotfiles phổ biến

Dưới đây là một số dotfiles được dùng phổ biến nhất.

  • .bashrc/.zshrc: Dùng để cấu hình môi trường shell Bash hoặc Zsh. Chứa các hàm alias và biến môi trường.
  • .gitconfig: Lưu các thiết lập cấu hình Git như thông tin người dùng và alias.
  • .vimrc: Lưu cấu hình cho trình soạn thảo Vim và bao gồm các thiết lập như tô sáng cú pháp, thụt lề, đánh số dòng, và ánh xạ phím. 

Các dotfiles dùng phổ biến như .bashrc, .zshrc và .vimrc, thường được lưu trong thư mục home. Điều này có thể khác nhau giữa các hệ thống. Trên Linux, chúng được lưu tại /home/username, trong khi trên macOS là /Users/username. Các tệp này thường bị ẩn để tránh làm lộn xộn thư mục, nhờ tiền tố (.) trong tên tệp. Bạn có thể xem chúng bằng cách chạy ls -a trong terminal. 

hình ảnh hiển thị danh sách dotfiles trong thư mục home

Danh sách dotfiles trong thư mục home. Ảnh: Tác giả

Các ứng dụng cần cấu hình phức tạp, như ứng dụng đồ họa và ứng dụng CLI hiện đại, lưu thiết lập cấu hình trong thư mục .config. Ví dụ, /.config/nvim, cho Neovim.

Cách thiết lập và tổ chức Dotfiles

Dotfiles thường nằm rải rác trong thư mục home của bạn. Vì vậy, một thực hành tốt là tạo một thư mục chứa tất cả dotfiles.

Tạo thư mục dotfiles

Để tạo thư mục dotfiles, mở terminal và tạo thư mục dotfiles trong thư mục home.

mkdir ~/dotfiles

Lệnh mkdir tạo thư mục mới trong thư mục home, trong đó ~ là ký hiệu đại diện cho thư mục home.

Nếu bạn có tệp .bashrc và .vimrc trong thư mục home, bạn có thể di chuyển chúng bằng cách chạy lệnh sau trong terminal.

mv ~/.bashrc ~/dotfiles/

Lệnh mv di chuyển tệp từ thư mục này sang thư mục khác. Bạn cũng có thể làm tương tự với tệp .vimrc.

mv ~/.vimrc ~/dotfiles/

Nếu bạn không có các tệp này trong thư mục home, hãy tạo tệp mới bằng cách chạy lệnh sau trong terminal.

touch ~/dotfiles/.bashrc ~/dotfiles/.vimrc

Lệnh touch cho phép bạn tạo tệp mới trong một thư mục xác định.

Chạy lệnh sau để xem tất cả tệp trong thư mục dotfiles.

ls -a ~/dotfiles

Hình hiển thị danh sách tất cả dotfiles mới tạo trong thư mục dotfiles.

Xem tất cả tệp trong thư mục dotfiles mới tạo. Ảnh: Tác giả.

Bạn có thể tổ chức dotfiles vào các thư mục được đặt theo tên ứng dụng tương ứng. Ví dụ, bạn có thể tạo thư mục bash để lưu dotfiles của Bash hoặc vim để lưu dotfiles của Vim và trỏ thư mục home của bạn tới các thư mục này bằng trình quản lý dotfile như GNU Stow. 

GNU Stow tạo các liên kết tượng trưng tới dotfiles của bạn, trỏ thư mục home đến dotfiles trong các thư mục tương ứng. Điều này khiến như thể dotfiles nằm trong thư mục home của bạn, nhưng thực ra chúng ở trong các thư mục con của thư mục dotfiles. Đây còn gọi là symlink. Để symlink các tệp này tới thư mục home, bạn cần cài GNU Stow. Vào thư mục dotfiles và chạy lệnh sau trên bất kỳ thư mục nào bạn muốn symlink với thư mục home. 

stow bash
# This will link all files in the bash folder to your home directory

Bạn cũng có thể làm tương tự với thư mục vim

stow vim

Thêm dotfiles vào hệ thống kiểm soát phiên bản

Kiểm soát phiên bản cho phép bạn theo dõi thay đổi trong thư mục dotfiles của mình. Bạn cũng có thể lưu trữ và chia sẻ chúng với người khác trên GitHub. Để bật kiểm soát phiên bản trong thư mục dotfiles, bạn cần khởi tạo git trong thư mục dotfiles bằng lệnh sau. 

git init

Hình minh họa cách khởi tạo git trong kho dotfile.

Khởi tạo kho Git. Ảnh: Tác giả.

Tiếp theo là thêm tất cả các tệp bạn đã tạo đến thời điểm này.

git add .

Nếu bạn chỉ muốn thêm một tệp, ví dụ .vimrc, bạn có thể chạy lệnh sau

git add .vimrc

Commit các thay đổi kèm thông điệp commit:

git commit -m “add dotfiles”

Khi đã thiết lập kiểm soát phiên bản cho dotfiles, bạn có thể dùng các nền tảng lưu trữ như GitHub hoặc GitLab để lưu trữ dotfiles. 

Vì sao nên dùng Dotfiles?

Việc tạo và quản lý dotfiles mang lại lợi ích gì cho nhà phát triển? Ở phần này, tôi sẽ nêu một vài lý do khiến các nhà phát triển quan tâm tới dotfiles.

  • Năng suất và hiệu quả: Là nhà phát triển, dotfiles cho phép bạn cấu hình phím tắt, alias và hàm để giảm gõ lặp lại. Ví dụ, bạn có thể tạo phím tắt cho git status thành gs và lưu trong tệp .bashrc hoặc .zshrc. 

  • Tính nhất quán giữa các thiết bị: Khi chuyển hệ thống, dotfiles cho phép bạn mang các tùy biến sang máy khác. Bạn chỉ cần clone dotfiles lên hệ thống mới.

  • Cộng đồng và chia sẻ tri thức: Bạn có thể chia sẻ dotfiles trên GitHub để người khác học cách tối ưu môi trường làm việc.

  • Bảo mật và quyền riêng tư: Thông tin nhạy cảm như khóa API và mật khẩu không nên công khai. Dotfiles giúp đảm bảo các tệp chứa khóa bí mật không bị đẩy lên công khai. Ví dụ là dotfile .gitignore, ngăn không cho các tệp bí mật bị đẩy lên GitHub. .gitconfig cho phép người dùng thiết lập danh tính Git mà không phải công khai trên mọi kho.

  • Nâng cấp môi trường phát triển: Dotfiles không chỉ giới hạn ở shell mà còn dùng để cấu hình các công cụ phát triển. Ví dụ, nhà phát triển Python dùng .pythonrc cho thiết lập Python REPL, còn nhà phát triển JavaScript dùng .npmrc cho cấu hình npm. .vimrc và .emacs.d/init.el cũng là dotfiles cho trình soạn thảo Vim và Emacs, cho phép người dùng tùy biến môi trường chỉnh sửa như tô sáng cú pháp, thụt lề, plugin, v.v.

Quản lý Dotfiles nâng cao

Bạn có thể dùng dotfiles cho các quy trình nâng cao, như sử dụng trên nhiều máy và tự động hóa thiết lập, chia sẻ, sao lưu. 

Dùng dotfiles trên nhiều máy

Với dotfiles, bạn có thể dựng quy trình làm việc cá nhân hóa trên nhiều máy. Bạn chỉ cần đảm bảo đã thiết lập kiểm soát phiên bản cho dotfiles bằng Git và GitHub rồi clone kho về máy mới bạn muốn làm việc bằng lệnh dưới đây. 

git clone <url>

Trong đó <url> là URL kho dotfile trên GitHub.

Tự động hóa với script cài đặt

Bạn có thể có một shell script để tự động cài đặt và tạo symlink cho dotfiles trên máy mới. Ví dụ, shell script dưới đây trong tệp install.sh tự động sao lưu và symlink dotfiles trên một máy.

#!/bin/bash

# Define paths
DOTFILES_DIR="$HOME/dotfiles"  
BACKUP_DIR="$HOME/dotfiles_backup"

# Files to link and their source directories
declare -A FILES
FILES[".bashrc"]="$DOTFILES_DIR/bash/.bashrc"
FILES[".vimrc"]="$DOTFILES_DIR/vim/.vimrc"

# Create a backup directory
mkdir -p "$BACKUP_DIR"

# Loop through each file and create a symlink
for file in "${!FILES[@]}"; do
    src="${FILES[$file]}"
    dest="$HOME/$file"

    # Backup existing file if it exists
    if [ -e "$dest" ]; then
        echo "Backing up existing $file to $BACKUP_DIR"
        mv "$dest" "$BACKUP_DIR/"
    fi

    # Create symlink
    echo "Linking $src to $dest"
    ln -s "$src" "$dest"
done

echo "Dotfile installation complete!"

Phân tích ngắn gọn script trên.

  • Script dùng DOTFILES_DIR làm thư mục gốc của dotfiles và BACKUP_DIR để sao lưu dotfiles hiện có trong thư mục $HOME.

  • Một mảng kết hợp FILES ánh xạ tên tệp đích trong thư mục home tới đường dẫn tương ứng trong DOTFILES_DIR.

  • Với mỗi tệp trong FILES, script kiểm tra xem đã có tệp tại vị trí đích $HOME/.bashrc hoặc $HOME/.vimrc chưa. Nếu có, tệp sẽ được chuyển vào BACKUP_DIR.

  • Sau đó tạo một symlink từ nguồn $DOTFILES_DIR/bash/.bashrc hoặc $DOTFILES_DIR/vim/.vimrc tới đích $HOME/.bashrc hoặc $HOME/.vimrc.

Bạn có thể cấp quyền thực thi cho script bằng lệnh sau

chmod +x install.sh

Và chạy lệnh sau để thực thi tệp install.sh.

./install.sh

Với tự động hóa quy mô lớn hoặc quản lý cấu hình trên nhiều hệ thống, bạn có thể dùng công cụ như Ansible, nơi các script tự động hóa được viết bằng YAML.

Tùy biến dotfiles cho ứng dụng

Dotfiles cho phép bạn tùy biến nhiều công cụ, từ trình soạn thảo đến hệ thống kiểm soát phiên bản. Ví dụ, bạn có thể tùy biến alias của Git bằng cách chỉnh sửa dotfiles .gitconfig. 

[user]
    name = <your-name>
    email = <[email protected]>
[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
[core]
    editor = vim
  • Trường name và email dưới phần [user] xác định tên và email của bạn như chúng xuất hiện trong thông điệp và nhật ký commit.

  • Phần [alias] tạo phím tắt cho các lệnh git thường dùng. Ví dụ, thay vì dùng lệnh git status, bạn có thể định nghĩa phím tắt git st để tiết kiệm thời gian.

  • Phần [core] chỉ định trình soạn thảo mặc định khi thực hiện commit. Bạn có thể dùng code cho VS Code hoặc subl cho Sublime Text. 

Chia sẻ và sao lưu Dotfiles

Nếu bạn muốn chia sẻ dotfiles với người khác hoặc sao lưu phòng trường hợp mất thiết bị, các nền tảng như GitHub hoặc GitLab giúp việc lưu trữ dotfiles rất thuận tiện. 

Lưu trữ dotfiles trên GitHub hoặc GitLab

Đảm bảo bạn đã đăng nhập GitHub và tạo kho mới. Sao chép URL kho và thêm vào lệnh sau.

Hình hiển thị URL kho dotfiles trên GitHub

Sao chép URL kho GitHub. Ảnh: Tác giả.

git remote add origin <url>

Sau đó đẩy các thay đổi lên kho từ xa.

git push -u origin main

Nếu bạn có các tệp bí mật, như tệp .env có thể chứa API secret hoặc mật khẩu, bạn có thể dùng tệp .gitignore để khai báo các tệp Git nên bỏ qua khi đẩy lên kho từ xa. 

Sao lưu và khôi phục dotfiles

Bạn có thể sao lưu thiết lập dotfiles bằng bất kỳ nhà cung cấp đám mây nào, như Google Drive, OneDrive hoặc Dropbox. Ví dụ, dùng Stow và Dropbox, bạn có thể tạo liên kết tượng trưng bên trong bộ nhớ đám mây từ ~/Dropbox/dotfile tới thư mục home. Bất cứ khi nào có cập nhật cục bộ cho dotfiles, thay đổi sẽ được đồng bộ lên đám mây. 

Bạn cũng có thể dùng các công cụ như Rclone, hỗ trợ hầu hết nhà cung cấp đám mây. Rclone cung cấp giao diện dòng lệnh giúp bạn dễ dàng đồng bộ dotfiles vào một thư mục lưu trữ đám mây. Bạn cũng có thể tạo cron job để tự động hóa định kỳ việc sao lưu dotfile. 

Thực hành tốt khi làm việc với Dotfiles

Dưới đây là một số thực hành tốt cần tuân thủ khi làm việc với dotfiles:

  • Giữ cấu hình dạng mô-đun: Chia nhỏ các tệp cấu hình lớn thành những phần nhỏ hơn. Lưu các tệp theo ứng dụng của chúng và giữ tất cả ở một nơi trung tâm.
  • Tránh sao chép dotfiles của người khác một cách mù quáng: Trước khi dùng dotfile của ai đó, hãy chắc chắn bạn hiểu cấu hình và nó phù hợp với quy trình của bạn. Đồng thời, chỉ áp dụng dotfiles từ nguồn tin cậy.
  • Lỗi cấu hình: Chuẩn bị giải pháp cho các vấn đề thường gặp như lỗi cú pháp trong tệp shell hoặc symlink sai, có thể khiến dotfiles không hoạt động đúng. Trước khi áp dụng dotfiles trên máy, hãy thử trên máy ảo hoặc container để tránh lỗi cấu hình.
  • Không tương thích giữa các hệ thống: Lưu ý vấn đề tương thích khi dùng dotfiles trên các hệ dựa trên Unix (ví dụ, Mac so với Linux). Đôi khi có khác biệt nhỏ giữa các shell trên các hệ Unix khác nhau.
  • Dùng hệ thống kiểm soát phiên bản: Luôn là thực hành tốt khi dùng hệ thống kiểm soát phiên bản để theo dõi thay đổi. Điều này hữu ích khi bạn muốn quay lại cấu hình trước đó và cũng giúp dễ dàng lưu trữ, chia sẻ quy trình làm việc.
  • Dùng liên kết tượng trưng: Thay vì sao chép dotfiles, hãy tạo symlink từ thư mục home tới dotfiles để luôn cập nhật.
  • Ghi chú và tài liệu: Ghi chú các thiết lập phức tạp để người khác dễ hiểu lý do của từng cấu hình.

Kết luận

Ban đầu, việc tạo và quản lý dotfiles có thể trông khó khăn, nhưng về lâu dài chúng giúp bạn năng suất và hiệu quả hơn. Hãy bắt đầu với một vài dotfiles thiết yếu và dần dần bổ sung thêm cấu hình theo thời gian.

Chắc hẳn bạn để ý tôi đã nhắc đến GitHub khá nhiều lần trong bài. GitHub là mắt xích quan trọng ở đây. Bên cạnh lộ trình Associate Python Developer tôi đã đề cập, hãy thử Chứng chỉ GitHub Foundations của chúng tôi, được xây dựng hợp tác cùng GitHub, sẽ dạy bạn những điều quan trọng như quản lý kho. Hơn nữa, khi hoàn thành khóa học với chúng tôi, bạn sẽ được giảm 75% lệ phí thi. 

Adejumo Ridwan Suleiman

Tác giả

Adejumo Ridwan Suleiman

Giảng viên khoa học dữ liệu giàu kinh nghiệm và Nhà thống kê sinh học, có chuyên môn về Python, R và học máy.

Câu hỏi thường gặp về Dotfile

Dotfile là gì?

Dotfiles là các tệp cấu hình ẩn trên hệ thống dựa trên Unix, lưu trữ cấu hình, thiết lập và ưu tiên cho nhiều ứng dụng, công cụ như hệ thống kiểm soát phiên bản và trình soạn thảo.

Tại sao tôi cần dotfiles?

Với tư cách nhà phát triển, dotfiles giúp cải thiện năng suất và hiệu quả. Chúng cũng cho phép bạn duy trì môi trường nhất quán giữa các thiết bị.

Làm sao tôi phân biệt dotfiles với các tệp khác trên PC?

Dotfiles là các tệp ẩn và thường có tiền tố (.).

Tôi có thể chia sẻ dotfiles với người khác không?

Bạn có thể chia sẻ dotfiles với người khác bằng cách lưu trữ chúng trên các nền tảng kiểm soát phiên bản như GitHub.

Tôi có thể quản lý dotfiles giữa nhiều máy không?

Có, bạn có thể có thiết lập phát triển cá nhân hóa trên máy khác. Bạn chỉ cần clone kho chứa dotfiles trên máy mới bạn muốn làm việc.

Chủ đề

Liên quan