Apa perbedaan antara "sumber" dan "."


147

Apa perbedaan antara menjalankan skrip (misalnya / beberapa / skrip) dengan source /some/scriptdan . /some/scriptdi Bash?

Jawaban:


134

sourcedan .identik di Bash .

Bagi siapa saja yang mungkin ingin memverifikasi bahwa perintah itu hanya sinonim dan tidak lebih, lihat kode sumber , katakan untuk versi 4.3, dan periksa file builtins/source.def. Anda akan membaca bahwa kedua built-in perintah, sourcedan ., menggunakan fungsi yang sama: source_builtin.


dimana ini didefinisikan? Maksud saya adalah. alias untuk sumber atau ini hal lain?
binW

hal yang persis sama

12
@binW: .adalah perintah sumber tradisional, yang diwarisi dari shell bourne kuno. sourcehanyalah bash builtin yang melakukan persis sama ., mungkin karena itu lebih mudah dibaca ( .sendirian mungkin sulit dikenali dengan font kecil). Anda akan melihat help sourcedan help .menampilkan info yang sama.
geirha

3
@binW: Jika Anda mencari man bashdan kemudian mencari sourceAnda akan melihat bahwa itu source filename [arguments]adalah sinonim untuk . filename [arguments].
Matthew Rankin

46

.identik dengan sourcedalam bash, tetapi tidak dalam POSIX sh, jadi Anda harus menggunakan .jika skrip Anda dijalankan oleh / bin / sh. Perhatikan bahwa bash mengklaim berjalan seperti POSIX sh ketika dipanggil sebagai / bin / sh, tetapi menerima sourcetanpa keluhan.

Perilaku ini telah menggigit saya, skrip diuji dengan bash sebagai / bin / sh gagal ketika dijalankan di bawah abu, misalnya.


16
POSIX tidak membatasi shell. POSIX hanya mengatakan; shell harus mendukung setidaknya fitur ini dan itu. Jadi shell POSIX bebas untuk mengimplementasikan fitur-fitur tambahan selama yang dijelaskan oleh POSIX diimplementasikan. Ketika shebang mengatakan #!/bin/shAnda tidak boleh menganggap shell mendukung apa pun kecuali fitur POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/…
geirha

Anda mungkin terpengaruh oleh urutan pencarian nama: unix.stackexchange.com/q/17815/8250
Lekensteyn

3
Jawaban ini membantu saya, karena sh sering digunakan dalam cron.
dfrankow
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.