Điểm:0

Bí danh không thành công khi được xác định trong .bash_aliases trên Ubuntu 20.04.2 qua ssh với máy chủ nhảy

lá cờ cn

Mở một máy chủ AWS Ubuntu 20.04.2. Máy chủ này nằm phía sau một máy chủ nhảy.

Khi máy chủ hoạt động, tôi đã chạy:

cập nhật sudo
nâng cấp sudo

Cũng như khởi động lại máy chủ. Sau đó, tạo một ~/.bash_aliases tệp và thêm bí danh sau:

bí danh lsd='ls -a -g --group-directories-first'

Sau khi lưu .bash_aliases, hãy tải lại .bashrc: nguồn ~/.bashrc

Khi sử dụng bí danh, lỗi sau được hiển thị:

xxx@ip-1-2-3-4:~$ lsd
's: tùy chọn không được nhận dạng '--group-directories-first
Hãy thử 'ls --help' để biết thêm thông tin.

Đã xác minh như sau:

  • lệnh đầy đủ sẽ chạy mà không có bí danh
  • bí danh hoạt động khi thêm trực tiếp vào tệp ~/.bashrc

Cũng đã xác minh .bashrc đang đọc trong bí danh:

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

Câu hỏi: Làm cách nào tôi có thể sử dụng tệp .bash_aliases qua ssh?

Tôi đã đọc qua một câu hỏi tương tự, nhưng giải pháp ở đó dường như không hiệu quả: Tại sao bí danh của tôi không hoạt động trên ssh?

Tôi đến từ nền tảng Windows và giờ mới bắt đầu làm việc trong thế giới Linux; được nhẹ nhàng.

Chỉnh sửa cho bối cảnh

Các .bash_aliases tệp đã được chỉnh sửa cục bộ trên Windows bằng MobaTextEditor trong khi ssh'd vào máy chủ. Mặc dù tệp trống đã được tạo trên máy chủ, mã hóa kiểu Unix không được ngụ ý trong trình chỉnh sửa vì tệp trống. Mã hóa Windows đã được thêm vào tệp sau khi chỉnh sửa và lưu lại máy chủ bằng MobaTextEditor.

lá cờ hr
Vị trí lạ của các dấu ngoặc kép trong thông báo lỗi cho thấy rằng tệp `.bash_aliases` có phần cuối dòng kiểu DOS - hãy kiểm tra với `file ~/.bash_aliases`
lá cờ cn
@steeldriver - trở lại dưới dạng `.bash_aliases: văn bản ASCII, với các đầu cuối dòng CRLF` - Tôi nên cập nhật câu hỏi của mình, lại: chạy Windows cục bộ bằng WSL và chỉnh sửa tệp bằng MobaTextEditor. Điều kỳ lạ là tôi đã chỉnh sửa `.bashrc` bằng MobaTextEditor và lệnh tệp được trả về `.bashrc: ASCII text`
lá cờ hr
.bash_aliases có phải là tệp mới không? Có thể MobaTextEditor duy trì phần cuối dòng của các tệp hiện có (như .bashrc của bạn) nhưng mặc định là CRLF cho các tệp mới.
lá cờ cn
@steeldriver - cảm ơn! Tôi đã cập nhật MobaTextEditor thành mã hóa và định dạng chính xác; đã tải lại mọi thứ và các bí danh hoạt động trong tệp `bash_aliases` ngay bây giờ. Nếu bạn muốn đưa ra một câu trả lời, tôi sẽ chấp nhận nó.
lá cờ hr
Cảm ơn - xem bên dưới
Điểm:2
lá cờ hr

Vị trí lạ của các dấu ngoặc kép trong thông báo lỗi cho thấy rằng tệp .bash_aliases có CRLF kiểu DOS (tức là \r\n) kết thúc dòng ví dụ.

$ printf '%s\r\n' "alias lsd='ls -a -g --group-directories-first'" >> ~/.bash_aliases

tệp $ ~/.bash_aliases
/home/steeldriver/.bash_aliases: Văn bản ASCII, với các đầu cuối dòng CRLF

$ . ~/.bash_aliases
$
$ lsd
's: tùy chọn không được nhận dạng '--group-directories-first
Hãy thử 'ls --help' để biết thêm thông tin.

Bạn có thể khắc phục bằng cách đặt kết thúc dòng UNIX thích hợp trong trình soạn thảo văn bản của mình hoặc bằng cách chuyển tệp qua dos2unix:

$ dos2unix ~/.bash_aliases
dos2unix: chuyển đổi tập tin /home/steeldriver/.bash_aliases sang định dạng Unix...

Sau đó, bạn sẽ cần phải lấy lại nguồn tệp.

lá cờ cn
Rất hữu ích. Cảm ơn về mẹo `dos2unix`.

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