Điểm:1

cài đặt bí danh cũng không hoạt động khi đăng nhập

lá cờ at

Hirsute mới được cài đặt = 21.04. Đã cài đặt ngoài gói, tạo tài khoản cá nhân của riêng tôi, .bashrc mặc định có trong homedir của tôi và để đảm bảo rằng cũng có .bash_aliases. Cả hai đề cập đến bí danh ll='ls -alF' bí danh này vẫn không khả dụng sau khi đăng nhập. Đây có phải là một lỗi hoặc tôi đang thiếu một cái gì đó?

NAME="Ubuntu"
VERSION="21.04 (Hà mã rậm lông)"

karel@schal:~$ pwd ; ls -al .bash*
/nhà/karel
-rwxr-xr-x 1 người dùng karel 53 ngày 26 tháng 9 06:22 .bash_aliases
-rw------- 1 người dùng karel 9834 ngày 26 tháng 9 06:23 .bash_history
-rw-r--r-- 1 người dùng karel 3771 23:17 ngày 31 tháng 8 .bashrc
karel@schal:~$ con mèo .bash_aliases
bí danh ll='ls -alF'
bí danh la='ls -A'
bí danh l='ls -CF'
karel@schal:~$ll
ll: lệnh không tìm thấy

đã chỉnh sửa sau một nhận xét không thân thiện lắm, để thêm:

karel@wiske:~$ ssh [email protected]
mật khẩu của [email protected]: 
Chào mừng bạn đến với Ubuntu 21.04 (GNU/Linux 5.11.0-34-chung x86_64)

 * Tài liệu: https://help.ubuntu.com
 * Quản lý: https://landscape.canonical.com
 * Hỗ trợ: https://ubuntu.com/advantage

0 bản cập nhật có thể được áp dụng ngay lập tức.


Danh sách các bản cập nhật có sẵn đã hơn một tuần.
Để kiểm tra các bản cập nhật mới, hãy chạy: sudo apt update
Lần đăng nhập cuối: CN 26 tháng 9 09:37:21 2021
karel@schal:~$ bí danh
karel@schal:~$ /bin/bash
karel@schal:~$ bí danh
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/ ^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
bí danh egrep='egrep --color=auto'
bí danh fgrep='fgrep --color=auto'
bí danh grep='grep --color=auto'
bí danh l='ls -CF'
bí danh la='ls -A'
bí danh ll='ls -alF'
bí danh ls='ls --color=auto'

và hành vi đó giống hệt nhau, cho dù đăng nhập trên mỗi ssh hay trong môi trường đồ họa cục bộ hay trên bảng điều khiển chỉ có văn bản cục bộ (dev/tty5 và tương tự)

Ngoài ra, theo yêu cầu, đoạn trích từ ~/.bashrc:

# Định nghĩa bí danh.
# Bạn có thể muốn đặt tất cả các phần bổ sung của mình vào một tệp riêng biệt như
# ~/.bash_aliases, thay vì thêm chúng trực tiếp vào đây.
# Xem /usr/share/doc/bash-doc/examples trong gói bash-doc.

nếu [ -f ~/.bash_aliases ]; sau đó
    . ~/.bash_aliases
fi

[chỉnh sửa thêm theo yêu cầu]

karel@schal:~$ ls -al ~/.bash_profile ~/.bash_login ./.profile
ls: không thể truy cập '/home/karel/.bash_profile': Không có tệp hoặc thư mục như vậy
ls: không thể truy cập '/home/karel/.bash_login': Không có tệp hoặc thư mục như vậy
ls: không thể truy cập './.profile': Không có tệp hoặc thư mục như vậy
karel@schal:~$ ps -p $$ | đuôi -n1 | awk '{in $NF}'
đánh đập
lá cờ vn
Bạn cần [bao gồm/lấy nguồn từ `.bashrc`](https://askubuntu.com/a/5278/349837) của bạn. Chạy `alias` để liệt kê tất cả các bí danh có sẵn của bạn
Karel Adams avatar
lá cờ at
Cám ơn Pablo. Nhưng điều đó đã được kiểm tra và chỉ bình thường đối với cài đặt mặc định "vanilla". Đối với lệnh "bí danh", nó trả về đầu ra bằng không.
sudodus avatar
lá cờ jp
Việc thêm bí danh trực tiếp trên dòng lệnh có hoạt động [tạm thời] không, chẳng hạn như `alias rm='rm -i'`? Việc thêm bí danh vào `~/.bashrc` có hoạt động [liên tục] không, vào lần tới khi bạn mở cửa sổ đầu cuối hoặc màn hình văn bản bằng `bash`?
Karel Adams avatar
lá cờ at
Thêm một bí danh từ dòng lệnh hoạt động, vâng. Nhưng bất cứ điều gì tôi chỉnh sửa thành .bashrc hoặc .bash_aliases đều không có tác dụng. Tôi bắt đầu nghi ngờ liệu .bashrc có được thực thi hay không. Đã kiểm tra /var/log/syslog nhưng không tìm thấy gì liên quan.
sudodus avatar
lá cờ jp
Có vẻ như bạn đang chạy một số chương trình shell khác? Điều gì sẽ xảy ra nếu bạn bắt đầu `bash` một cách rõ ràng bằng dòng lệnh `bash` ?
sudodus avatar
lá cờ jp
Bạn có chỉnh sửa bất kỳ lệnh hoặc tệp cấu hình nào có thể ngừng thực thi `~/.bashrc` không? Hoặc có thể ai đó đã điều chỉnh hệ thống để biến điều đó thành hiện thực?
terdon avatar
lá cờ cn
Vui lòng [chỉnh sửa] câu hỏi của bạn và tôi) cho chúng tôi biết điều gì sẽ xảy ra nếu bạn thêm định nghĩa bí danh vào `~/.bashrc` và _not_ của `~/.bash_aliases` không chuẩn. Điều đó có hiệu quả không? ii) hiển thị cho chúng tôi đầu ra của `echo $SHELL` và `ps aux -p $$` để chúng tôi có thể biết bạn đang chạy trình bao nào. iii) Làm rõ cách bạn đăng nhập. Đây là hệ thống cục bộ hay hệ thống từ xa? Bạn có đăng nhập qua GUI hoặc có lẽ bằng ssh không? Cuối cùng, đừng cho chúng tôi biết "nó đã được kiểm tra".Hãy chỉ cho chúng tôi dòng thực tế từ `~/.bashrc` của bạn để đọc tệp `~/.bash_aliases` vì đó không phải là một tính năng bash và là một bản sửa đổi của Ubuntu.
vanadium avatar
lá cờ cn
Đã xảy ra lỗi trước đó trong `.bashrc` của bạn. Kiểm tra bằng cách di chuyển nó ra (đổi tên nó) sau đó sao chép .bashrc mặc định của hệ thống (thực sự được thiết lập thành nguồn .bash_aliases): cp /etc/skel/.bashrc .
sudodus avatar
lá cờ jp
Cũng có thể do bạn không chạy bash mà chạy shell khác mặc định, ví dụ csh, tcsh, zsh. Vui lòng kiểm tra theo các lệnh trong bình luận của terdon.
Karel Adams avatar
lá cờ at
@vanadium: Tôi đã xem xét điều đó, nhưng vô ích. ```diff .\.bashrc /etc/skel/.bashrc``` không mang lại đầu ra.
terdon avatar
lá cờ cn
Tôi cho rằng bạn có ý nhận xét của tôi khi bạn nói "một nhận xét không thân thiện lắm". Nếu vậy, xin lỗi! Tôi không có ý tỏ ra cộc cằn. Nếu đó là cách nó xảy ra, tôi hẳn đã thể hiện bản thân mình một cách tồi tệ. Lời xin lỗi của tôi. Đối với những gì nó có giá trị, tôi cũng đã nêu lên câu hỏi của bạn kể từ ngày hôm qua.
Điểm:3
lá cờ cn

Khi đăng nhập qua ssh, bạn đang chạy cái được gọi là vỏ đăng nhập tương tác, và không phải là một vỏ không đăng nhập tương tác đó là những gì xảy ra khi bạn mở một thiết bị đầu cuối sau khi đăng nhập. Shell đăng nhập không đọc ~/.bashrc và thay vào đó hãy đọc ~/.profile, ~/.bash_profile~/.bash_login. Đây là lý do tại sao bí danh của bạn không có mặt. Để biết thêm chi tiết về điều này và sự khác biệt giữa các tệp khởi tạo của các loại shell khác nhau, hãy xem Tại sao các tập lệnh trong /etc/profile.d/ bị bỏ qua (bí danh bash trên toàn hệ thống)?. Đây cũng là lý do tại sao bạn nhận được bí danh của mình khi chạy /bin/bash vì điều đó bắt đầu Shell không đăng nhập và sẽ đọc ~/.bashrc.

Điều đó nói rằng, mặc định của Ubuntu ~/.profile tập tin bao gồm những dòng này:

# bao gồm .bashrc nếu nó tồn tại
nếu [ -f "$HOME/.bashrc" ]; sau đó
. "$HOME/.bashrc"
fi

Vì vậy, nó thực sự nên được đọc của bạn ~/.bashrc cũng. Nếu điều này không xảy ra, tôi nghi ngờ một trong những điều sau đây:

  1. Bạn (hoặc ai đó) đã tạo một ~/.bash_profile tập tin. Điều đó sẽ gây ra ~/.profile tập tin bị bỏ qua. Như đã giải thích trong người đàn ông bash (nhấn mạnh của tôi):

    Khi bash được gọi dưới dạng trình bao đăng nhập tương tác hoặc dưới dạng trình bao không tương tác với tùy chọn --login, nó đầu tiên đọc và thực thi các lệnh từ tệp /etc/profile, nếu tệp đó tồn tại. Sau khi đọc nó tập tin, nó tìm kiếm ~/.bash_profile, ~/.bash_login và ~/.profile, theo thứ tự đó, đọc và thực thi comâ yêu cầu từ cái đầu tiên tồn tại và có thể đọc được. Tùy chọn --noprofile có thể được sử dụng khi trình bao bắt đầu ngăn chặn hành vi này.

    Vì vậy, nếu một trong hai ~/.bash_profile hoặc ~/.bash_login tồn tại, sau đó bất cứ điều gì trong ~/.profile được bỏ qua.

  2. Bạn (hoặc người khác) đã tạo của riêng bạn ~/.profile mà không có nguồn ~/.bashrc.

  3. Bạn không thực sự chạy đánh đập. Bạn có thể kiểm tra điều này bằng cách chạy ps -p $$ | đuôi -n1 | awk '{in $NF}' trong trình bao nơi bạn không có bí danh. Nếu đầu ra không đánh đập, bạn đang chạy một trình bao khác. Có lẽ bạn đã đặt vỏ đăng nhập mặc định của mình thành sh, đó là dấu gạch ngang trên Ubuntu. Bạn có thể kiểm tra giá trị hiện tại với tiếng vang $SHELL và bạn có thể thay đổi nó với chsh.


Dựa trên chỉnh sửa mới nhất của bạn, có vẻ như trường hợp của bạn là:

  1. bạn không có ~/.profile đối với một số lý do. Và, dựa trên lần chỉnh sửa cuối cùng của bạn, đây có vẻ là trường hợp. Vì vậy, chỉ cần sao chép mặc định .Hồ sơ từ /etc/skel và bạn sẽ ổn trong lần đăng nhập tiếp theo:

    cp /etc/skel/.profile ~/
    
Điểm:1
lá cờ at

@terdon đã đúng: vì lý do này hay lý do khác, không có .profile trong homedir của tôi. Tất cả đều ổn sau đó - như đề xuất - cp /etc/skel/.profile ~

Đă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.