Bạn có thể sử dụng tính năng gỡ lỗi shell để xem chính xác những gì đang xảy ra khi bash gọi shell tương tác. Sau đây sẽ cho bạn thấy tất cả các bí danh được gán khi một vỏ tương tác được sinh ra từ một vỏ đăng nhập:
bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
-x
-> cho phép gỡ lỗi
-l
-> vỏ đăng nhập
-i
-> vỏ tương tác
-c
-> lệnh
Chạy lệnh thoát được yêu cầu để shell trả về. Điều -i
này là bắt buộc trong trường hợp này vì bash sẽ không thiết lập môi trường tương tác để chạy lệnh khác.
Đây là một ví dụ từ hệ thống của tôi:
$ bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
++ alias 'ls=ls --color=auto'
$ alias -p
alias ls='ls --color=auto'
Để xem tệp nào được lấy nguồn cuối cùng khi bí danh được chỉ định để xác định tệp đã xảy ra, bạn có thể mở rộng grep:
bash -x -l -i -c 'exit' 2>&1 | grep -E ' (alias|[.]|source) '
Điều này có thể trả về dương tính giả, nhưng sẽ ổn nếu bạn đang kiểm tra thủ công dữ liệu được trả về. Số lượng các ký hiệu '+' phía trước lệnh được thực thi cho biết độ sâu.
+ . /home/jordan/.bashrc
++ alias 'ls=ls --color=auto'
++ . /home/jordan/.foo
+++ alias t=test
++ alias t=test2
Trong đầu ra mẫu này, nó cho thấy .bashrc đặt bí danh cho ls
, bí danh .foo t
và sau đó .bashrc ghi đè lên bí danh trước đó của t
.