লিনাক্সের নতুন অধিবেশনে '.প্রফাইলে' লোড হচ্ছে না Bash


22

আমি আমাদের আইটি বিভাগ থেকে একটি নতুন লিনাক্স মেশিন প্রস্তুত করছি এবং লক্ষ্য করেছি .profile আমি নতুন টার্মিনাল সেশন শুরু করার সময় করা যায় না। বর্তমান শেলটি বাশ , যদিও আমি এটি ডিফল্ট sh থেকে এটিকে পরিবর্তন করেছি । আমি কীভাবে .profileএটি প্রারম্ভকালে লোড করব ?

আমি এসএসএইচ এর মাধ্যমে শেলটি অ্যাক্সেস করি : ssh myusername@remotemachine। এটিতে প্রশাসকের অধিকার রয়েছে।


আপনার শেলটি শুরু করতে আপনি যে আদেশটি ব্যবহার করেছেন তা আমাদের প্রদর্শন করুন।
নিফলে

উত্তর:


24

ব্যাশ একটি ইন্টারেক্টিভ লগ-ইন শেল হিসাবে আরম্ভ হলে, ফাইল এক হতে পারে প্রক্রিয়া ~/.profile

এটি যখন ইন্টারেক্টিভ অ-লগইন শেল হিসাবে শুরু হয় তখন তা হয় না। এটা তোলে প্রক্রিয়াকরণ /etc/bash.bashrcএবং (যে ফাইল বা অনুরূপ ফাইল ব্যাশ আপনার সংস্করণে সক্ষম হয়) ~/.bashrc

আপনি নিম্নলিখিতগুলিতে আপনার যোগ করতে পারেন ~/.bashrc(তবে অজান্তে লুপগুলি বা মানগুলি পরিবর্তন করা সম্পর্কে সতর্ক থাকুন):

. $HOME/.profile

8
যদি আপনি আপনার .brcrc উত্সটি আপনার। প্রোফাইল নিতে চলেছেন (যা আমি প্রস্তাব দিই না) আপনার ডাবল সোর্সিংয়ের বিরুদ্ধে কিছু রক্ষী থাকা উচিত। কিছু গার্ড পরিবর্তনশীল বা তাই সেট করুন [ -z "$SOME_VAR_SET_IN_PROFILE" ] && . ~/.profile
সমৃদ্ধ হোমোলকা

2
হ্যাঁ, আমি সত্যিই এটির প্রস্তাবও দিই না।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

12
একটি লগইন শেলটি ক্রম অনুসারে ~ / .bash_profile, ash / .Bash_login এবং ile /। প্রোফাইলে চেষ্টা করবে এবং এটি প্রথমটি খুঁজে পাবে open
বিয়ানো

3
অন্যরা যেমন বলেছে, এটি প্রস্তাবিত নয়, যেহেতু সাধারণ উপায়টি প্রোফাইল এবং "বন্ধু" (.bash_profile) এর উত্স থেকে .bashrc, এবং অন্যভাবে নয়। এটি হতে পারে যে আপনার টার্মিনাল প্রোগ্রামটি লগইন শেল নয়, তবে একটি ইন্টারেক্টিভ অ-লগইন শেল। প্রায়শই আপনি সেট করতে পারেন এমন একটি পছন্দ আছে - এটি কার্যকর করার জন্য। প্রোফাইল,। লগিন এবং / অথবা .বাশ_প্রফাইলে পাওয়ার জন্য একটি লগইন শেল করুন।
রোলস

15

এটি আপনার শেলটি কীভাবে শুরু করবেন তা নির্ভর করে। অন্যরা যেমন বলেছে, একটি লগইন শেল আপনার প্রোফাইলটি লোড করবে (এটি প্রথমে .bash_profile সন্ধান করবে, তারপরে। প্রোফাইলটি চেষ্টা করবে)। যদি এটিগুলির মধ্যে একটির সন্ধান করে তবে এটি সেগুলি লোড করে। একটি লগইনবিহীন শেল (হয় ইন্টারেক্টিভ বা অ-ইন্টারেক্টিভ) উত্সটি সরবরাহ করবে ash

আমি সব কিছু .bashrc এ দেওয়ার পরামর্শ দিই। প্রফাইলে / .bashrc বিভাজনটি এক ধরণের স্বেচ্ছাচারী ছিল এবং ইউএনআইএক্সের পুরানো দিনগুলিতে আরও বেশি তাৎপর্যপূর্ণ হয়েছিল যখন টিটিটি কেবল একটি ডিভাইসের নাম ছিল না এবং এটি একটি আসল টেলিটাইপকে বোঝায়। এটি একটি সার্ভারে 'মেইন' লগইনে কিছু জিনিস (যেমন মেল পরীক্ষা করা) এবং অন্য শেলগুলির জন্য কেবলমাত্র সাধারণ সেটআপ স্টাফ শুরু করা ছিল। বেশিরভাগ লিনাক্সে আপনি এখন লগইন করবেন, আপনি কোনও শেলটিতে সত্যই লগইন করছেন না, কারণ আপনি কিছু গ্রাফিকাল ইন্টারফেসে লগইন করছেন (কেডি, জিনোম, সিডিই 'কাঁপুনি')। "স্প্যান লগইন প্রক্রিয়াগুলি" এখন আপনার সেশন ম্যানেজার দ্বারা যত্ন নেওয়া হবে। এটি এখন অনেক কম প্রাসঙ্গিক।

আমার পরামর্শ: আপনার। প্রোফাইলে সম্পূর্ণরূপে গঠিত:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

.বাশার্কের প্রথম লাইন হিসাবে, প্রথম দিকে ঝাঁপিয়ে পড়ে বাশ স্ক্রিপ্ট চালানোর সময় ঘটে যাওয়া অদ্ভুত জিনিসগুলি থেকে রক্ষা করুন:

[[ $- != *i* ]] && return

5
.profileবাশ অজ্ঞেয় রাখা উচিত। আমি .bash_profileলোড .profileএবং তারপরে লোড করার জন্য কনফিগার করার পরামর্শ দিই .bashrc। কেবল বাশ অজ্ঞেয়াদি জিনিসগুলিতে .profile, পছন্দ মতো PATHএবং স্টাফগুলিতে রাখুন LC_*। বাকীটি ভিতরে রাখুন .bashrc
লেসমানা

@ রিচ হোমোলকা কেন আপনার আদেশে দুবার [-f $ HOME / .bashrc]? আপনি যে আদেশটি পোস্ট করেছেন সেটিকে ন্যায়বিচারের চেয়ে আলাদা কীভাবে করা যায়। OME হোম / .bashrc '?
ডেভিড ডরিয়া

1
প্রতিলিপি: আপনার .bashrc- এ এমন কিছু রাখবেন না যা স্টডআউট বা স্ট্ডারকে লিখবে, এটি এসসিপির মতো জিনিসের জন্য অ ইন্টারেক্টিভ ক্লায়েন্টকে ভেঙে ফেলতে পারে। আউটপুট সহ জিনিসগুলি (উদাহরণস্বরূপ, আমি একটি ভাগ্য কুকি এবং আপটাইম দিয়ে অভ্যর্থনা জানাতে চাই) কেবলমাত্র প্রোফাইলে / .বাশ_প্রফাইলে যেতে হবে
ব্রায়ান এ হেনিং

পছন্দ করুন আমাদের কাছে একটি স্ট্যান্ডার্ড-ইশ kshrc ছিল যা স্টডআউট রফতানি করত, জেসারভার ভেঙে ফেলল (হামিংবার্ড ছাড়িয়ে গেল)
রিচ হোমোলকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.