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.