Đây là một thủ tục chung mà bạn có thể sử dụng cho khá nhiều vỏ. Trong mọi trường hợp, bạn phải biết người dùng thường đăng nhập với shell nào:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
Sau đó, bạn phải tìm ra tệp chấm nào mà shell này thường đọc:
man $shell
Một phím tắt có thể hoạt động là liệt kê các tệp chấm chứa tên shell:
ls ~/.*${shell}*
Nếu bạn muốn kiểm tra xem một trong các tệp có thực sự được đọc trong quá trình đăng nhập hay không, bạn chỉ cần in tên tệp trong mỗi tệp, ví dụ:
echo .bashrc
Khi đăng nhập, bạn sẽ thấy tập tin nào đang được đọc và bạn có thể quyết định tập tin nào cần sửa đổi. Xin lưu ý rằng bạn không nên cố gắng sử dụng echo "$0"
hoặc tương tự, bởi vì giá trị $0
phụ thuộc vào cách shell xử lý các tệp chấm và có thể gây hiểu nhầm.
Khi nói đến việc khai báo biến "vĩnh viễn", lưu ý rằng điều này chỉ kéo dài đến phiên. Không có cách nào để truy cập giá trị của một biến mà không có phiên, vì vậy nó không có ý nghĩa gì ngoài một biến. Nếu bạn có nghĩa là "chỉ đọc", đó là phụ thuộc shell và trong Bash bạn có thể sử dụng:
declare -r VAR
nếu nó đã có giá trị, hoặc
declare -r VAR=value
để gán nó cùng một lúc. Không phải tất cả các vỏ đều có tính năng này.
Để khai báo một biến trong hầu hết các shell, bạn nên sử dụng tên biến ( [A-Za-z_][A-Za-z0-9_]*
), theo sau là dấu bằng (và không có khoảng trắng xung quanh dấu bằng), sau đó là một giá trị (tốt nhất là trích dẫn trừ khi giá trị là đơn giản [A-Za-z0-9_]+
). Ví dụ:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1