"" ব্যবহার করা কি ঠিক আছে? উত্সের পরিবর্তে ফাইলগুলি চালানোর জন্য - উবুন্টু এবং ওএস এক্সে .bashrc এ?


11

ঠিক আছে, সুতরাং sourceবর্তমান শেলটিতে এবং .পৃথকভাবে স্ক্রিপ্টটি চালায় "," এবং "উত্স" সহ উদাহরণস্বরূপ স্ক্রিপ্ট চালানোর ক্ষেত্রে, তবে, বিশেষত, আমার .bashrcফাইলে আমার কাছে রয়েছে:

[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ -f ~/.git-completion.bash ] && source ~/.git-completion.bash
[ -s ~/.autojump/etc/profile.d/autojump.sh ] && source ~/.autojump/etc/profile.d/autojump.sh

আমি কি এর সাথে প্রতিস্থাপন করতে পারি:

[ -f ~/.bash_aliases ] && . ~/.bash_aliases
[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash
[ -s ~/.autojump/etc/profile.d/autojump.sh ] && . ~/.autojump/etc/profile.d/autojump.sh

ওএস এক্স-এ কি এটি কাজ করবে - এটিই কি "পসিক্স" সমস্যা?

আমি এটা চেষ্টা এবং এখনও উপরে উবুন্টু কাজ বলে মনে হচ্ছে (তাই তারা আসলে উভয় সঙ্গে কাজ sourceএবং ., যে, তারা আমাকে শেল কাঙ্ক্ষিত কার্যকারিতা দিতে)। আমি কি অন্যের থেকে একটি বেছে নিতে পারি, বা আমি কিছু মিস করছি?

ওএস এক্স-এ এফডাব্লুআইডাব্লু, আমি আমার .bashrcথেকে উত্স উত্স .bash_profile


1
যদি এটি 'শ' ভিত্তিক শেল হয় তবে আমি ব্যবহার করব '' বৈশ্বিক সামঞ্জস্যের জন্য এবং আপনি যদি 'সিএসএস' ভিত্তিক শেল ব্যবহার করেন তবে আমি উত্সটি ব্যবহার করব।
এমডিপিসি

2
লিঙ্কযুক্ত পোস্টে আপনি কোথায় দেখছেন যে " sourceবর্তমান শেলটিতে এবং .পৃথকভাবে স্ক্রিপ্টটি চালায় "? তারা উভয় এটি বর্তমান শেলের মধ্যে চালায়; অন্যথায় কোনও অর্থ হবে না
মাইকেল মরোজেক

উত্তর:


11

এই POSIX সংজ্ঞা এর .dot:

শেলটি বর্তমান পরিবেশে ফাইল থেকে কমান্ড কার্যকর করবে।

যদি ফাইলটিতে একটি থাকে না /<slash>, শেলটি $PATHফাইল ধারণকারী ডিরেক্টরিটি সন্ধানের জন্য নির্দিষ্ট অনুসন্ধান পথ ব্যবহার করবে । সাধারণ কমান্ড অনুসন্ধানের বিপরীতে, .dot ইউটিলিটি দ্বারা অনুসন্ধান করা ফাইলটি কার্যকর করতে হবে না । যদি কোনও পঠনযোগ্য ফাইল না পাওয়া যায় তবে একটি অ-ইন্টারেক্টিভ শেলটি বাতিল করতে হবে; একটি ইন্টারেক্টিভ শেল স্ট্যান্ডার্ড ত্রুটিতে ডায়াগনস্টিক বার্তা লিখবে, তবে এই শর্তটি সিনট্যাক্স ত্রুটি হিসাবে বিবেচিত হবে না।

উপরে বিবেচনা, আপনি হিসাবে ভাল শুধু আপনার প্রতিস্থাপন পারে [ -f ./file ] && source ./fileসঙ্গে . ./fileপুরাপুরি। ফাইলটি যদি না থাকে তবে সবচেয়ে খারাপটি ঘটবে তা হ'ল আপনি লগইনে একটি নোটিশ পাবেন - যা সম্ভবত আপনার কাছে থাকা তথ্যই হতে পারে I

অবশ্যই আপনি যদি পরীক্ষাটি চালিয়ে যান তবে আপনি করতে পারেন:

test -f ./file && . $_

2
ওহ, লোকেরা জানে $_, আমি এটি পছন্দ করি। :)
আন্দ্রেস উইজ

@ আন্ড্রেসভিস - প্রত্যেকের উচিত - এটি পসিক্স দ্বারা সংজ্ঞায়িত 7 টি বিশেষ প্যারামিটারগুলির মধ্যে একটি one
মাইকজার্ভ

+1 আমি test -f /.file && . $_এখানে প্রদর্শিত পদ্ধতির সাহায্যে শেষ করেছি
মাইকেল ডুরান্ট

6
@ মাইকজার্ভ নং, পসিক্স $_দ্বারা প্রমিত নয়। 8 বিশেষ পরামিতি হয় $@, $*, $#, $$, $!, $?, $-এবং $0$_হয় স্পষ্টভাবে বাদ দেওয়া । আপনার ভুল মন্তব্যটি একটি প্রশ্ন ছড়িয়ে দিয়েছে ।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

19

ইন bash, .এবং sourceপ্রতিশব্দ আছে। bashউত্স কোড, ফাইলের সন্ধানে builtin/source.defআপনি একই অভ্যন্তরীণ ফাংশনটি দেখতে .sourceব্যবহার করতে পারেন source_builtin:

$BUILTIN source
$FUNCTION source_builtin
$SHORT_DOC 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.
$END

$BUILTIN .
$DOCNAME dot
$FUNCTION source_builtin
$SHORT_DOC . filename [arguments]
Execute commands from a file in the current shell.

তবে sourceপসিক্স সামঞ্জস্যপূর্ণ নয়, সুতরাং আপনার স্ক্রিপ্টটি যদি পসিক্সের সাথে কল করা হয় তবে আপনার পরিবর্তে /bin/shব্যবহার .করা উচিত source। যেহেতু পসিএক্স শেলকে সীমাবদ্ধ করে না, আপনার উপরের সমস্ত স্ক্রিপ্ট কাজ করবে।

ব্যক্তিগতভাবে, আমি সবসময় .পরিবর্তে ব্যবহার করি source। (আমি লিখেছি প্রচুর স্ক্রিপ্ট cron)।


সমস্ত জিনিস সমান, "এর পরিবর্তে" উত্স "ব্যবহার করুন। একটি কারণে: "।" এর জন্য অনুসন্ধান / গ্রেপ করার চেষ্টা করুন। একটি বৃহত স্ক্রিপ্টে প্রকাশ। এটা দুঃস্বপ্ন।
Abonet

যদিও এই উত্তরটি ব্যাখ্যা করেছে যে ব্যবহারগুলি .সাধারণত ব্যবহারের চেয়ে "আরও ভাল" sourceকেননা @ অ্যাবনেট বলেছে sourceযে এটি অনুসন্ধান করা অনেক সহজ। যেহেতু পিরিয়ডগুলি অনেকগুলি ভাষায় বিরামচিহ্ন হয়, তাই চোখের পক্ষে কেবল এগুলি এড়ানো সহজ। যে কারণে আমি ব্যবহার করতে পছন্দ করি source
জো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.