Bagaimana cara menemukan bantuan untuk perintah titik `.` di * nix?

21

Saya perlu mencari bantuan untuk perintah titik .seperti di . ./my_script.sh(maksud saya titik pertama.)

Saya sudah mencoba menemukan halaman manual menggunakan man .dan man \.. Bagaimana saya bisa menampilkan halaman manual yang menjelaskan penggunaan perintah .?

aturegano
sumber
14
@ C0deDaedalus: Nama kanonik untuk "." adalah FULL STOP. Apa yang orang sebut itu tergantung di mana mereka dibesarkan.
RedGrittyBrick
5
Jalankan saja:help .
kenorb
2
Dalam dokumen, itu disebut dot. Lihat spesifikasi formal di pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html
Charles Duffy
11
@ jamesqf .adalah sebuah perintah, khususnya shell builtin. Di Bash setara dengan source.
wjandrea
4
@ jamesqf: .adalah POSIX, bukan hanya bash. Misalnya itu juga dalam zsh dan ksh.
MSalters

Jawaban:

79

Pertama-tama Anda harus memohon type ., Anda mungkin akan mendapatkan sesuatu seperti:

. is a shell builtin

Builtin adalah bagian dari shell Anda, mereka tidak memiliki halaman manual sendiri. Beberapa dari mereka mungkin tampaknya memilikinya, misalnya echoadalah builtin di Bash tetapi kemungkinan besar ada executable terpisah seperti /bin/echodi sistem Anda dan dalam hal ini man echomerujuk pada yang terakhir . Kedua echos ini mungkin tidak sepenuhnya setara.

Shell Anda dapat memberikan informasi tentang builtin melalui helpbuiltin; coba help help, help typedan akhirnya:

help .

Builtins juga dapat dicantumkan di halaman buku panduan shell Anda. Misalnya (dalam Debian saya) Bash bawaan sudah tercakup langsung man bash, namun untuk Zsh bawaan man zshsaya minta saya lari man zshbuiltins. Secara umum shell mungkin atau mungkin tidak menjelaskan builtin mereka.

Kamil Maciorowski
sumber
7
+1 untuk penunjuk yang .merupakan shell-built-in dan Ini harus ditandai sebagai jawaban karena OP bertanya how to find help for . in *nix ?.
C0deDaedalus
7
+1 untuk penggunaan type .untuk menunjukkan bahwa beberapa perintah adalah shell bawaan.
Roger Lipscombe
1
Pada sebagian besar Debian, Bash bawaan juga diekstraksi ke bash-builtins(1)halaman buku panduan, yang berukuran lebih nyaman.
Toby Speight
Selain itu, menjalankan "tipe" hanya berfungsi jika Anda menggunakan shell yang memiliki "tipe" builtin. Jika Anda menggunakan tcsh, "ketik." memberikan "type: Command not found."
jamesqf
1
Bahkan . --helpbekerja
Digital Trauma
25

Coba gunakan man shatau man bashatau halaman manual untuk shell apa pun yang Anda gunakan. (Mungkin man $SHELL.)

Ini secara resmi tidak disebut perintah "titik", tetapi sourceperintah. Mencari kata sourcemungkin bermanfaat.

misal, halaman manual bash (cari "setiap perintah builtin"), dan Anda akan segera menemukan dokumentasinya.

Sedangkan untuk menjelaskan penggunaannya, saya bisa melakukannya di sini. Saya hanya akan merujuk ini sebagai sourceperintah, mengakui bahwa itu dapat disingkat menjadi hanya periode ketika Anda menggunakan beberapa shell, dan dengan beberapa shell yang mungkin perlu perintah (karena titik mungkin dikenali tetapi seluruh kata sourcemungkin tidak menjadi).

Jika Anda menggunakan sourceperintah, shell Anda akan membaca setiap baris dari file skrip, dan mencoba untuk mengeksekusinya. Anda perlu izin "baca" pada file. (Tidak masalah jika Anda memiliki izin "eksekusi".) Jika Anda memodifikasi variabel, itu cenderung mempengaruhi shell Anda saat ini.

Jika, di sisi lain, Anda hanya mencoba mengeksekusi file, maka shell Anda akan meminta sistem operasi untuk mengurus permintaan ini. Ini akan membutuhkan izin "eksekusi". (Pada beberapa sistem, seperti OpenBSD, Anda tidak perlu izin "baca" untuk ini. Di sistem lain, Anda akan memerlukan banyak variasi Unix.) File tersebut mungkin harus mulai dengan tajuk yang sesuai (misalnya,#!/bin/sh Sehingga pengoperasian) sistem mengenali ini sebagai file skrip. Sistem operasi akan menjalankan salinan shell yang diminta, dan memberi tahu shell itu untuk menjalankan konten skrip. Jika lingkungan shell diubah (misalnya, variabel mendapatkan nilai baru, direktori kerja diubah (dengan  cd), deskriptor file dialihkan (dengan exec), dll.), itu hanya akan berdampak pada sub-shell yang dipanggil untuk skrip, dan tidak dapat memodifikasi lingkungan di shell induk yang disebut file skrip.

TOOGAM
sumber
15
Itu hanya sourcedi bash. Dalam spesifikasi POSIX, itu disebut "perintah dot" (dan sourcealias tidak didukung).
Charles Duffy
1
Sebuah skrip membutuhkan izin baca, jika tidak, penerjemah tidak dapat mengaksesnya. Lihat Bisakah skrip dapat dieksekusi tetapi tidak dapat dibaca?
wjandrea
1
Menjalankan skrip tidak membuka sub-shell, tetapi hanya proses anak normal, seperti menjalankan program yang dikompilasi. Lihat jawaban ini pada "Apakah sub-shell sama dengan shell anak-anak?"
wjandrea
1
Jadi, saya mengetik man bashdan lalu apa /.,? Sangat tidak berguna. /sourceakan berguna, tetapi untuk itu Anda harus tahu itu .dan itu sourceadalah hal yang sama.
Joker_vD
1
Saya menemukan paragraf "Adapun menjelaskan penggunaan ..." sedikit menyesatkan, karena mengandung arti bahwa hal itu mungkin menjadi .dan itu mungkin menjadi source, tetapi sebagai @CharlesDuffy telah disebutkan, itu selalu . dalam setiap shell POSIX-compliant dan hanya memiliki alias sourcedi satu shell.
Tom Fenech
6

Tidak ada orang lain yang menyebutkannya, karena sering dilupakan.

Petunjuk terbesar Anda akan datang dari perintah membantu whatis.

tim@musha ~ $ whatis .
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis source
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis bash
bash (1)             - GNU Bourne-Again SHell
tim@musha ~ $ whatis lynx
lynx (1)             - a general purpose distributed information browser for the World Wide Web
tim@musha ~ $ whatis linux
linux: nothing appropriate.
tim@musha ~ $ whatis whatis
whatis (1)           - display one-line manual page descriptions

EDIT:

Beberapa orang telah menunjukkan di komentar bahwa ini tidak ada dalam beberapa distrobutions - mungkin ini adalah paket yang dapat diinstal, atau mengaktifkan beberapa cara - Saya memilikinya secara default di gentoo;)

Ini termasuk yang luar biasa - yang memberi tahu Anda yang dapat dieksekusi dipanggil, dan di mana yang memberi Anda semua jalan ke nama yang dapat dieksekusi Anda, dan itu halaman manual (jika ada di beberapa jalur).

djsmiley2k - Kontrak Karya
sumber
1
Petunjuk yang bagus tetapi tampaknya itu tidak bekerja di mana-mana. Misalnya, dalam AIX dengan ksh, whatis .mengembalikanman: 0703-307 . is not found.
aturegano
4
whatis .tidak mengembalikan apa pun di Ubuntu 16.04
Vadim Kotov
Dan ":: tidak ada yang sesuai." pada OpenSuSE menggunakan tcsh.
jamesqf
2
Ah, dari halaman man itu sendiri: "whatis - tampilkan deskripsi halaman manual satu baris." Jadi tampaknya ini adalah versi yang sangat pendek dari manusia.
Xen2050
Opsi yang lebih kompatibel mungkin: apropos (yang harus sama dengan menjalankan "man -k"). Untuk "." atau "sumber" (yang merupakan bagian dari kata "sumber daya") ini tidak berfungsi dengan baik, karena terlalu banyak positif palsu, tetapi kemungkinan akan bekerja untuk contoh Anda yang lain (bash, lynx, dan whatis). Di Debian Linux: " whatis ." memberi " .: nothing appropriate." pada OpenBSD, menghasilkan 47 baris output. Untuk contoh khusus ini (menggunakan " whatis ." di Gentoo), hasilnya mungkin saja tidak baik (artinya teknik ini umumnya tidak berguna untuk banyak skenario contoh lainnya).
TOOGAM
4

man source akan menunjukkan penjelasan yang Anda butuhkan.

Titik sama dengan perintah sumber.

source mengeksekusi skrip di shell saat ini alih-alih dalam subshell (itu cara biasa).

Menggunakan sourcevariabel yang ditetapkan di dalam skrip dipertahankan setelah skrip selesai.

jcbermu
sumber
2
Di distro apa sajakah yang man sourceberfungsi? Bukan di Debian saya, karena itu pertanyaannya.
Kamil Maciorowski
1
Ini bekerja di CentOS 6.5. Saya kira ini lebih terkait dengan versi bash. Dalam kasus saya adalah 4.1.2 (1)
jcbermu
@ jcbermu, tidak ada versi bash yang mengirimkan halaman manual terpisah untuk sourceupstream - itu kemungkinan besar dilakukan oleh CentOS.
Charles Duffy
Pada sistem saya, man sourcememberi Anda man bash_builtins, yang tidak menjelaskan apa pun, tetapi merujuk Anda kebash(1)
Scott
1
Pada sistem saya (Ubuntu LTS) man sourcememberi saya source(3tcl)... type commanddan kemudian jika perintahnya adalah builtin help commandmungkin adalah cara yang tepat ...
Hastur
0

Ini .adalah sinonim untuk shellsource perintah dan dalam bash , sintaksnya ditampilkan oleh ...

help source

Fungsinya persis seperti includedan importmemerintahkan dalam bahasa lain karena ia membaca file target dan menafsirkannya seolah-olah itu adalah bagian dari skrip saat ini. Dengan demikian, file itu akan dieksekusi secara keseluruhan sebelum perintah di sisa skrip saat ini.

Biasanya harus di awal skrip saat ini dan paling sering digunakan untuk memuat variabel dan / atau definisi fungsi.

DocSalvager
sumber