سؤال ماذا يفعل "المصدر"؟


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

موجود ، ويتم تشغيله. لماذا لا توجد أي وثائق حول هذا الموضوع في أوبونتو؟ ماذا تعمل، أو ماذا تفعل؟ كيف يمكنني تثبيت وثائق حول هذا الموضوع؟


505
2017-09-24 10:35


الأصل


ذات صلة: superuser.com/questions/176783/... - lesmana
أنت نسيت $ type source  source is a shell built-in - bnjmn
بلدي قذيفة عاد هذا $ whatis source  source (1) - bash built-in commands, see bash(1). أيضا، man source يأخذني إلى BASH_BUILTINS(1) صفحات رجل. هذا هو على فيدورا راجع للشغل ، لا فكرة لماذا هذه الحزم ديبيان هي الامم المتحدة (أو سيئة) - موثقة. - arielnmz
lesmana ، رابط رائع. أن إجابة مرتبطة هي الإجابة الأكثر دقة على هذا السؤال. - Scott
جرب "مصدر المساعدة" - Jasser


الأجوبة:


source هو أمر مضمن في shell bash ينفذ محتوى الملف الذي تم تمريره كوسيطة ، في القشرة الحالية. لديها مرادف في . (فترة).

بناء الجملة

. filename [arguments]

source filename [arguments]

416
2017-09-24 10:47



هو source أمر bash معين أو القيام قذائف أخرى لها أيضا؟ (أطلب الحصول على العلامات مباشرة على السؤال ...) - Jonik
بقدر ما أعلم، source كان موجودا في قشرة Bourne وبالتالي قد يكون موجودا في جميع أحفادها. en.wikipedia.org/wiki/Bourne_shell. وأنا أعلم أن ليس كل قذائف لديها source أمرًا أقل يقينًا بشأن القذائف التي تحتوي عليها. - nagul
nagul، source لم يكن موجودا في وعاء بورن ، إنه ملحق جنو جاء متأخرا كثيرا. الصيغة الأصلية والمحمولة لا يزال (POSIX) هي استخدام الأمر "نقطة" ، أي . في حين أن. أنا شخصيا لا تستخدم أبدا source بالنظر إلى حقيقة أنه أطول للكتابة وليس له قيمة مضافة. أعتقد أن الهدف الرئيسي هو جعل البرامج النصية أكثر قابلية للقراءة للمبتدئين. - jlliagre
jlliagre شخصيتي "شرح لماذا يكون المصدر" هو ذلك source ليس فقط أكثر وصفية ، لكنه يبدو وكأنه شيء آخر غير الخطأ المطبعي. لقد تخطى الأشخاص النقطة / النقطة عندما أرسل أوامر تقنية في البريد الإلكتروني. - Rich Homolka
أحد الاستخدامات الشائعة لهذا الأمر هو برنامج نصي shell source في "ملف التكوين" الذي يحتوي على مهام متغيرة في الغالب. ثم تتحكم مهام المتغير في الأشياء التي يفعلها باقي النص. بطبيعة الحال ، فإن نص جيد يحدد المتغيرات إلى الافتراضيات معقولة قبل source، أو على الأقل تحقق من وجود قيم صالحة. - LawrenceC


كن حذرا! ./ و source هي ليس مثله تماما.

  • ./script يعمل البرنامج النصي كملف قابل للتنفيذ، إطلاق قذيفة جديدة لتشغيلها
  • source script يقرأ وينفذ الأوامر من اسم الملف في قذيفة الحالية بيئة

ملحوظة: ./script ليس . script، لكن . script == source script

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


240
2017-07-11 13:24



أنت تمزج ./command و. النصي. الأمر المصدر هو نفس الأمر. باستخدام ./meh يقول تشغيل البرنامج النصي / ثنائي اسمه ميه في الدليل الحالي ، وحصلت على أي علاقة مع المصدر /. -أمر. كما هو موضح في الجواب في الرابط الخاص بك. - Joakim Elofsson
JoakimElofsson ورد ذكرها في الرابط ، لكني سأعدّل الإجابة لتجنب سوء الفهم. يرجى تصحيح ذلك. - damphat
افضل جواب. شكر! - JedatKinports
من المهم أن تشير الإجابة المقبولة أيضاً إلى هذا السؤال ، لأنني اعتقدت للحظة ./ == source == . - Daniel F


من المفيد معرفة الأمر "type":

> type source
source is a shell builtin

كلما كان هناك شيء مدمج في القشرة ، حان وقت القيام به man bash.


82
2018-01-09 15:45



دائما تعرف شيئا جديدا عند القراءة man )
تستطيع ايضا استخذام help {builtin-name}، أي help source. - LawrenceC
help لا يعمل في كل مكان (على الأقل في zsh). type هل. - kumar_harsh
للتضخيم: إذا كنت تستخدم "bash" ، وإذا كنت تعرف (ربما عن طريق "type") ، فسيكون الأمر مدمجًا ، ثم "help" ستوصلك مباشرةً إلى فقرة الوثائق التي تريدها بدون الخوض خلال 4،184 سطر من " رجل باش 'النص. - Ron Burk


. (فترة) هو باش شل المدمج في القيادة الذي ينفذ الأوامر من ملف تم تمريره كوسيطة ، في shell الحالي. "المصدر" هو مرادف لـ ".".

من صفحة باش مان:

. 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





"المصدر" هو الإصدار الطويل من "." أمر. على موجه باش ، يمكن القيام بما يلي:

source ~/.bashrc

إعادة تحميل الإعداد bash (تغيير؟) لباش التشغيل الحالي.

الإصدار القصير سيكون:

. ~/.bashrc

صفحة الرجل:

. 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



يجب أن يكون هذا هو الجواب المقبول. - Peter Mortensen


source ينفذ الأمر النصي المقدم (إذن قابل للتنفيذ هو ليس إلزاميا) في ال تيار بيئة قذيفة ، في حين ./ ينفذ المقدمة تنفيذ النصي في الجديد الصدف.

source الأمر له مرادف . filename.

لجعلها أكثر وضوحا ، إلقاء نظرة على البرنامج النصي التالي ، والذي يحدد الاسم المستعار.

اصنع اسم مستعار

#! /bin/bash

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

الآن لدينا خياران لتنفيذ هذا البرنامج النصي. لكن مع فقط خيار واحد ، يمكن إنشاء الاسم المستعار المطلوب للقشرة الحالية بين هذين الخيارين.

الخيار 1: ./make_alias

اجعل البرنامج النصي قابل للتنفيذ أولاً.

chmod +x make_alias

نفذ - اعدم

./make_alias

التحقق

alias

انتاج |

**nothing**

يصيح! الاسم المستعار ذهب مع القشرة الجديدة.

لنذهب مع الخيار الثاني.

الخيار 2: source make_alias

نفذ - اعدم

source make_alias

أو

. make_alias

التحقق

alias

انتاج |

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

بلى تم تعيين الاسم المستعار.


17
2018-03-27 13:57





عندما تكون في شك ، فإن أفضل شيء فعله هو استخدام info أمر:

[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



هل يمكنك تقديم أكثر من مجرد RTFM؟ - Peter Mortensen


اكتب الأمر "مصدر التعليمات" في shell الخاص بك.

سوف تحصل على إخراج مثل هذا:

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





من مشروع توثيق Linux ، دليل برمجة Bash المتقدم ،
الفصل 15 - الأوامر الداخلية و Builtins:

مصدر، . (الأمر dot):
  ينفذ هذا الأمر ، عند استدعاؤه من سطر الأوامر ، نصًا برمجيًا. داخل برنامج نصي ، يقوم اسم الملف المصدر بتحميل اسم ملف الملف. تحديد مصدر رمز استيراد (نقطة الأوامر) في البرنامج النصي ، إلحاق البرنامج النصي (نفس التأثير كتوجيه #include في برنامج C). النتيجة الصافية هي نفسها كما لو كانت خطوط "مصدر" من التعليمات البرمجية موجودة جسديا في نص البرنامج النصي. وهذا مفيد في الحالات التي تستخدم فيها البرامج النصية المتعددة ملف بيانات أو مكتبة للوظائف مشتركة.
إذا كان الملف المصدر نفسه برنامج نصي قابل للتنفيذ ، فسيتم تشغيله ، ثم يعيد التحكم إلى البرنامج النصي الذي يطلق عليه. قد يستخدم البرنامج النصي القابل للتنفيذ المصدر عودة لهذا الغرض.

لذلك ، بالنسبة لأولئك المطلعين على لغة البرمجة C ، فإن العثور على ملف له تأثير مماثل لـ #include التوجيه.

لاحظ أيضًا أنه يمكنك تمرير الوسائط الموضعية إلى الملف الذي يتم الحصول عليه ، مثل:

$ source $filename $arg1 arg2

2
2018-06-12 00:13



كيف تختلف هذه الإجابة عن 9 إجابات سابقة؟ - Stephen Rauch
أقوم بإضافة مصدر آخر للمعلومات ومعلومات إضافية لم يتم ذكرها من قبل. - Alexandro de Oliveira


تجدر الإشارة إلى أنه على الرغم من كونه أمر رائع ، لا source ولا اختزاله . سيكون مصدر  أكثر من واحد الملف ، وهذا يعني

source *.sh

أو

. script1.sh script2.sh

سوف ليس عمل.

يمكننا العودة باستخدام for حلقات ، لكنها ستصدر الملف القابل للتنفيذ عدة مرات ، وإنشاء أوامر متعددة أو إصدار منه.

استنتاج: source لا يأخذ ملفات متعددة كمدخلات. يجب أن تكون الحجة واحدة.

الذي تمتص IMHO.


1
2018-05-31 11:23