Pertanyaan Apa yang dilakukan 'sumber'?


$ whatis source
source: nothing appropriate.
$ man source
No manual entry for source
$ source
bash: source: filename argument required
source: usage: source filename [arguments]

Itu ada, dan itu bisa dijalankan. Mengapa tidak ada dokumentasi tentang itu di Ubuntu? Apa fungsinya? Bagaimana saya bisa menginstal dokumentasi tentang itu?


489
2017-09-24 10:35


asal


terkait: superuser.com/questions/176783/… - lesmana
Anda lupa $ type source  source is a shell built-in - bnjmn
My shell mengembalikan ini $ whatis source  source (1) - bash built-in commands, see bash(1). Juga, man source membawaku ke BASH_BUILTINS(1) halaman manual. Ini ada di Fedora btw, tidak tahu mengapa paket debian itu tidak (atau buruk) -documented. - arielnmz
@lesmana, tautan yang bagus. Bahwa jawaban tertaut adalah jawaban yang lebih menyeluruh untuk pertanyaan ini. - Scott
Coba "sumber bantuan" - Jasser


Jawaban:


source adalah bash shell built-in command yang mengeksekusi konten file yang dilewatkan sebagai argumen, di shell saat ini. Ini memiliki sinonim dalam . (periode).

Sintaksis

. filename [arguments]

source filename [arguments]

398
2017-09-24 10:47



Aku s source perintah khusus bash atau apakah shell lain memilikinya juga? (Saya meminta untuk mendapatkan tag tepat pada pertanyaan ...) - Jonik
Afaik, source hadir di Bourne shell dan karenanya mungkin hadir di semua keturunannya. en.wikipedia.org/wiki/Bourne_shell. Saya tahu bahwa tidak semua shell memiliki source perintah, kurang yakin tentang shell mana yang memuatnya. - nagul
@nagul, source tidak ada di Bourne shell, ini adalah ekstensi GNU yang muncul kemudian. Sintaksis asli dan masih portabel (POSIX) adalah dengan menggunakan perintah "dot", yaitu . sebagai gantinya. Saya pribadi tidak pernah digunakan source mengingat fakta itu lebih lama untuk mengetik dan tidak memiliki nilai tambah. Saya rasa tujuan utamanya adalah membuat skrip lebih mudah dibaca untuk pemula. - jlliagre
@jlliagre pribadi saya "menjelaskan mengapa memiliki sumber" itu source tidak hanya lebih deskriptif, tetapi terlihat seperti sesuatu selain salah cetak. Saya telah melewatkan periode / titik ketika saya mengirim perintah teknis dalam email. - Rich Homolka
Satu penggunaan umum untuk perintah ini adalah untuk skrip shell source dalam "file konfigurasi" yang berisi sebagian besar tugas variabel. Tugas variabel kemudian mengontrol hal-hal sisa skrip. Tentu saja, script yang baik akan mengatur variabel ke default yang masuk akal sebelum source, atau setidaknya periksa nilai yang valid. - LawrenceC


Hati-hati! ./ dan source adalah tidak persis sama.

  • ./script menjalankan skrip sebagai file yang dapat dieksekusi, meluncurkan file shell baru untuk menjalankannya
  • source script membaca dan menjalankan perintah dari nama file di shell saat ini lingkungan Hidup

catatan: ./script tidak . script, tapi . script == source script

https://askubuntu.com/questions/182012/is-there-a-difference-between-and-source-in-bash-after-all?lq=1


227
2017-07-11 13:24



Anda mencampur ./command dan. naskah. source-command sama dengan.-command. Menggunakan ./meh mengatakan menjalankan skrip / binari bernama meh di direktori saat ini, dan tidak ada hubungannya dengan source /. -perintah. Seperti yang dijelaskan dalam jawaban di tautan Anda. - Joakim Elofsson
@JoakimElofsson Disebut di tautan, tetapi saya akan mengubah jawaban untuk menghindari salah paham. Tolong perbaiki. - damphat
Jawaban Terbaik. Terima kasih! - JedatKinports
Sangat penting bahwa jawaban yang diterima juga mengarah ke yang ini, karena untuk sesaat saya memikirkan itu ./ == source == . - Daniel F


Ini berguna untuk mengetahui perintah 'ketik':

> type source
source is a shell builtin

setiap kali sesuatu adalah shell builtin sudah waktunya untuk melakukannya man bash.


82
2018-01-09 15:45



Selalu tahu sesuatu yang baru saat membaca man )
Anda juga bisa menggunakan help {builtin-name}, i.e. help source. - LawrenceC
help tidak berfungsi di mana saja (minimal dalam zsh). type tidak. - kumar_harsh
Untuk memperkuat: jika Anda menggunakan bash, dan jika Anda tahu (mungkin melalui 'jenis') itu adalah perintah built-in, maka 'bantuan' akan membawa Anda langsung ke paragraf dokumentasi yang Anda inginkan tanpa mengarungi 4.184 baris ' teks man bash '. - Ron Burk


. (suatu periode) adalah a bash shell built-in command yang mengeksekusi perintah dari file yang dilewatkan sebagai argumen, di shell saat ini. 'sumber' adalah sinonim untuk '.'.

Dari halaman manual Bash:

. filename [arguments]
source filename [arguments]
       Read  and  execute  commands  from filename in the current shell
       environment and return the exit status of the last command  exe‐
       cuted from filename.  If filename does not contain a slash, file
       names in PATH are used to find the  directory  containing  file‐
       name.   The  file  searched  for in PATH need not be executable.
       When bash is  not  in  posix  mode,  the  current  directory  is
       searched  if no file is found in PATH.  If the sourcepath option
       to the shopt builtin command is turned  off,  the  PATH  is  not
       searched.   If any arguments are supplied, they become the posi‐
       tional parameters when  filename  is  executed.   Otherwise  the
       positional  parameters  are unchanged.  The return status is the
       status of the last command exited within the  script  (0  if  no
       commands  are  executed),  and false if filename is not found or
       cannot be read.

34
2017-09-24 10:48





'sumber' adalah versi panjang dari '.' perintah. Pada prompt bash yang dapat dilakukan:

source ~/.bashrc

untuk memuat ulang pengaturan bash (berubah?) untuk bash yang sedang berjalan.

Versi singkatnya adalah:

. ~/.bashrc

Halaman manual:

. filename [arguments]
source filename [arguments]
    Read and execute commands from filename in the current shell environment and
    return the exit status of the last command executed from filename. If 
    filename does not contain a slash, file names in PATH are used to find the
    directory containing filename. The file searched for in PATH need not be
    executable. When bash is not in posix mode, the current directory is
    searched if no file is found in PATH. If the sourcepath option to the short
    builtin command is turned off, the PATH is not searched. If any arguments
    are supplied, they become the positional parameters when filename is
    executed. Otherwise the positional parameters are unchanged. The return 
    status is the status of the last command exited within the script (0 if no
    commands are executed), and false if filename is not found or cannot be
    read. 

20
2017-09-24 10:46



Ini harus menjadi jawaban yang diterima. - Peter Mortensen


source perintah mengeksekusi skrip yang disediakan (izin yang dapat dieksekusi adalah tidak wajib) dalam arus lingkungan shell, sementara ./ mengeksekusi yang disediakan dapat dieksekusi skrip dalam baru kulit.

source perintah memang memiliki sinonim . filename.

Untuk membuatnya lebih jelas, lihat skrip berikut, yang menetapkan alias.

membuat alias

#! /bin/bash

alias myproject='cd ~/Documents/Projects/2015/NewProject'

Sekarang kita memiliki dua pilihan untuk menjalankan skrip ini. Tetapi dengan hanya satu opsi, alias yang diinginkan untuk shell saat ini dapat dibuat di antara dua opsi ini.

Pilihan 1: ./make_alias

Buat skrip dapat dieksekusi terlebih dahulu.

chmod +x make_alias

Menjalankan

./make_alias

Memeriksa

alias

Keluaran

**nothing**

Ups! Alias ​​hilang dengan cangkang baru.

Mari kita pilih opsi kedua.

Pilihan 2: source make_alias

Menjalankan

source make_alias

atau

. make_alias

Memeriksa

alias

Keluaran

alias myproject='cd ~/Documents/Projects/2015/NewProject'

Ya Alias ​​diatur.


17
2018-03-27 13:57





Jika ragu, hal terbaik yang harus dilakukan adalah menggunakan info perintah:

[root@abc ~]# info source

BASH BUILTIN COMMANDS
       Unless otherwise noted, each builtin command documented in this section
       as accepting options preceded by - accepts -- to signify the end of the
       options.   The  :, true, false, and test builtins do not accept options
       and do not treat -- specially.  The exit, logout, break, continue, let,
       and  shift builtins accept and process arguments beginning with - with-
       out requiring --.  Other builtins that accept  arguments  but  are  not
       specified  as accepting options interpret arguments beginning with - as
       invalid options and require -- to prevent this interpretation.
       : [arguments]
              No effect; the command does nothing beyond  expanding  arguments
              and  performing any specified redirections.  A zero exit code is
              returned.

        .  filename [arguments]
       source filename [arguments]
              Read and execute commands from filename  in  the  current  shell
              environment  and return the exit status of the last command exe-
              cuted from filename.  If filename does not contain a slash, file
              names  in  PATH  are used to find the directory containing file-
              name.  The file searched for in PATH  need  not  be  executable.
              When  bash  is  not  in  posix  mode,  the  current directory is
              searched if no file is found in PATH.  If the sourcepath  option
              to  the  shopt  builtin  command  is turned off, the PATH is not
              searched.  If any arguments are supplied, they become the  posi-
              tional  parameters  when  filename  is  executed.  Otherwise the
              positional parameters are unchanged.  The return status  is  the
              status  of  the  last  command exited within the script (0 if no
              commands are executed), and false if filename is  not  found  or
              cannot be read.

5
2017-11-11 05:44



Bisakah Anda memberikan lebih dari sekedar RTFM? - Peter Mortensen


Ketik perintah "help source" di shell Anda.

Anda akan mendapatkan hasil seperti ini:

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.

3
2017-09-19 14:14