Cái gì không / đường dẫn / lệnh` làm gì? (Không gian sau dấu chấm, đường dẫn tuyệt đối)


7

Từ hướng dẫn này đến hoàn thành Bash, chúng ta biết rằng để Bash thực hiện tự động hoàn thành, người ta phải thực hiện . /etc/etc/bash_completion.d/foobar( lưu ý khoảng trống sau. ) để hoàn thành Bash hoạt động.

$ /etc/bash_completion.d/ssh
bash: /etc/bash_completion.d/ssh: Permission denied
$ . /etc/bash_completion.d/ssh
$ ls -l /etc/bash_completion.d | grep ssh
-rw-r--r-- 1 root root   297 Jan 28 18:04 ssh

.một phím tắt cho sourcelệnh? Nếu không thì nó là gì? Không thể google tìm kiếm, man sourcekhông trả lại bất cứ thứ gì apropos sourceinfo sourcecung cấp rất nhiều thông tin không liên quan mà tôi không thể biết nếu những gì tôi đang tìm kiếm có trong đó không. Làm thế nào tôi thậm chí có thể bắt đầu RTFM để tự tìm câu trả lời cho câu hỏi này?


Đọc bashtrang man vì đây là một lệnh tích hợp, tìm kiếm lời giải thích cho nguồn, rất khó bỏ lỡ.
Anthon

3
"Là .một phím tắt cho lệnh nguồn?" - đó thực sự là một cách khác: .là lệnh và sourcelà bí danh tương thích (để tương thích với csh). Lưu ý rằng sourcekhông tồn tại trong vỏ bourne POSIX tiêu chuẩn ..
Celada


Thông thường khi đơn giản, nó vẫn bị ẩn ... Nó có thể đơn giản như viết " trợ giúp ": hãy nhìn bên dưới ;)
Hastur

Câu trả lời:


14

.giống hệt với sourcechức năng.

Như mọi khi, tài liệu tham khảo đầu tiên là man bashtrang hướng dẫn nơi bạn có thể xác nhận dự đoán ban đầu của mình bằng cách tìm kiếm/ source

... Hàm shell hoặc tập lệnh được thực thi bằng .hoặc nguồn ...

là tài liệu tham khảo đầu tiên, nhưng xa hơn một chút bạn tìm thấy một phần Lệnh Shell dựng sẵn

. filename [arguments]
source filename [arguments]
Đọc và thực thi các lệnh từ tên tệp trong môi trường shell hiện tại và trả về trạng thái thoát của lệnh cuối cùng được thực hiện từ tên tệp. Nếu tên tệp không chứa dấu gạch chéo, tên tệp trong PATH được sử dụng để tìm thư mục chứa tên tệp. Các tập tin tìm kiếm trong PATH không cần phải được thực thi. Khi bash không ở chế độ posix, thư mục hiện tại được tìm kiếm nếu không tìm thấy tệp nào trong PATH. Nếu tùy chọn đường dẫn đến lệnh dựng sẵn shopt bị tắt, PATH không được tìm kiếm. Nếu bất kỳ đối số nào được cung cấp, chúng sẽ trở thành tham số vị trí khi tên tệp được thực thi. Mặt khác, các tham số vị trí không thay đổi. Trạng thái trả về là trạng thái của lệnh cuối cùng được thoát trong tập lệnh (0 nếu không có lệnh nào được thực thi) và sai nếu không tìm thấy tên tệp hoặc không thể đọc được.

Thực tế đó là một hàm dựng sẵn bash là lý do nguồn không đi kèm với trang man của chính nó, đó là lý do tại sao apropos thất bại.


Cảm ơn bạn, tôi chưa bao giờ nghĩ sẽ thực hiện man bash, nhưng tôi sẽ thêm nó vào kỹ thuật "thử trước khi đăng". Trang đó có vẻ như tôi sẽ mất vài tháng để xem xét và hiểu đầy đủ, tôi đang ở trong một thời gian tốt!
dotancohen

Như mọi khi tham khảo đầu tiên là man bash? Tôi chắc rằng nếu tôi gặp vấn đề với sshlệnh sẽ không giúp tôi nhiều. Nó là nhiều tài liệu tham khảo của phương sách cuối cùng.
Anthon

Nếu bạn đang viết các tập lệnh bash và điều tra tự động hoàn thành, chắc chắn nó sẽ như vậy. Nhưng đó có thể là tiếng nói của kinh nghiệm.
HBruijn

Lệnh dot nằm trong shell Bourne và được chuẩn hóa trong shell POSIX. Lệnh nguồn là tương tự trong trình bao C và được thêm vào Bash (và không được chuẩn hóa bởi POSIX).
Jonathan Leffler

đối với các nội dung bash bạn có thể sử dụng help, như trong help sourcehoặchelp .
Carlos Campderrós

4

Câu trả lời của bạn ngắn gọn:

  1. . absolute_path/mycommand nguồn tập tin script mycommandtrong thư mục absolute_path/. Để tham khảo thêm đọc tại đây
  2. .sourcetương đương.
  3. Khi cần, hãy hỏi helpđể bash shellbản thân. Bạn sẽ có một câu trả lời cho các lệnh được xây dựng.

Một số từ
thường xuyên hơn Cách đơn giản nhất cũng khó nắm bắt nhất: chúng tôi không nghĩ rằng chúng tôi có thể yêu cầu helptrình bao , khi các lệnh được xác định bên trong.
Với type .type sourcechúng ta có thể nhận thấy rằng những người đang được xây dựng trong các lệnh.

Hastur@Cthulhu:~> type . source  
. is a shell builtin  
source is a shell builtin

Một khi chúng ta biết điều đó, với helpchúng ta có thể có một số thông tin nhanh về họ.
Lệnh helpkhông có tham số từ dấu nhắc cung cấp cho chúng tôi:

GNU bash, phiên bản 4.1.2 (1) ...
Các lệnh shell này được định nghĩa bên trong .
Nhập helpđể xem danh sách này. Nhập help nameđể tìm hiểu thêm về tên chức năng .
Sử dụng info bashđể tìm hiểu thêm về vỏ nói chung.
Sử dụng man -k' orthông tin 'để tìm hiểu thêm về các lệnh không có trong danh sách này.

Trong khi đó help .cũng như help sourcebạn có được sự giúp đỡ giống hệt nhau :

source: source filename [arguments]
Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

"Rõ ràng là điều không bao giờ được nhìn thấy cho đến khi ai đó thể hiện nó một cách đơn giản." K.Gibran


1

Dấu chấm này "." có nghĩa là đọc và thực thi các lệnh từ đối số tên tệp trong ngữ cảnh shell hiện tại. Nó tương đương với nguồn. Phong cách này là từ vỏ Bourne và vui lòng tham khảo http://ss64.com/bash/source.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.