Điểm:0

Xung đột chức năng Bash/Tên bí danh gây ra lỗi seg

lá cờ me

Vấn đề trong bài viết này cũng xảy ra với tôi. mkdir gặp sự cố bash

Tôi không thể bình luận ở đó vì không có danh tiếng. Bất cứ ai có thể làm sáng tỏ tại sao điều này xảy ra? Nó xảy ra trong thời gian chạy Không phải khi chức năng được tải. Đây là dán của cùng một vấn đề.

md() 
{  
    [ $# -eq 0 ] && { echo "$0 dirname [quyền]"; trở lại; }
    [ -d "$1" ] && { tiếng vang "%1 đã tồn tại!"; trở lại; }
    mkdir -m ${2:-0755} -p "$1"
}

"Vấn đề là trước đây tôi đã có một bí danh như alias md="mkdir" nên khi bash phân tích cú pháp hàm bash mới, nó đã mở rộng hàm md() thành mkdir() và hàm trở nên đệ quy vô hạn và làm hỏng trình bao."

Tôi cảm thấy vấn đề này đã được tìm thấy một cách khéo léo nhưng tôi không hiểu lý do. Tôi không hiểu bất kỳ lý do có thể nào mà việc mở rộng bí danh đang định hướng sai chức năng trình bao đủ điều kiện. Ngược phải không?

Xin lỗi vì sự lừa bịp, vui lòng đọc lý do tại sao trước khi chú thích.

lá cờ hr
Bí danh thực sự chỉ là các macro thay thế văn bản - vì vậy khi bạn cố gắng *xác định* `md() { ... }` sau khi xác định `md=mkdir` thì bạn thực sự kết thúc bằng `mkdir() { ... }`. Hãy thử in hàm defs với `declare -p -f md` và `declare -p -f mkdir` để xem ý tôi là gì.
Điểm:0
lá cờ me

"Bí danh thực sự chỉ là macro thay thế văn bản - vì vậy khi bạn cố gắng xác định md() {...} sau khi xác định md=mkdir bạn thực sự kết thúc với mkdir() {...}. Hãy thử in hàm defs với khai báo -p -f mdkhai báo -p -f mkdir để xem ý tôi là gì." â steeldriver

zi@zi-top:~$ khai báo -p -f nd
bash: khai báo: nd: không tìm thấy
zi@zi-top:~$ khai báo -p -f mkdir
mkdir () 
{ 
    mkdir -p "$@"
}
zi@zi-top:~$nd() {
        mkdir -p "$@"
}
zi@zi-top:~$ khai báo -p -f nd
bash: khai báo: nd: không tìm thấy

Tôi thấy rằng những gì mà Steeldriver nói là đúng, tôi nghĩ đó là một quyết định kiến ​​trúc kỳ lạ với một lý do nào đó trong mã có thể là văn bản bashism wurl. Cảm ơn!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.