Login / .বাশ_লগিন ব্যবহার করে লগইনে স্ক্রিপ্ট চালান


15

আমি আমার উবুন্টুতে লগইন এবং লগ আউট করার সময় আমার একটি স্ক্রিপ্ট চালানো দরকার।

আমি স্ক্রিপ্টটি নিজের মধ্যে রাখার চেষ্টা করেছি ~/.bash_loginকিন্তু এটি কার্যকর হয়নি।

আমার স্ক্রিপ্টটি চালাতে পারে এমন আরও ভাল কোনও জায়গা আছে কি?

আমার স্ক্রিপ্টটি অবস্থিত /home/gsd/script/login.shএবং এটি সম্পাদনযোগ্য।

সম্পাদনা:

আমি টাইপ করার সময় আমার স্ক্রিপ্টটি চলে: /home/gsd/script/login.shএবং এটি + x এর সাথে সেট হয়

এখন, আমি শুধু আছে: touch /home/gsd/test.txtমধ্যে ~/.bash_loginপরীক্ষা।

test.txt ফাইলটি কখনই তৈরি হয় না

সম্পাদনা 2:

gsd@laptop:~$ ll ~/.bash*
-rw------- 1 gsd gsd 38639 2012-01-25 17:25 .bash_history
-rw-r--r-- 1 gsd gsd    29 2012-01-25 15:22 .bash_login
-rw-r--r-- 1 gsd gsd   220 2011-11-03 19:22 .bash_logout
-rw-r--r-- 1 gsd gsd  3136 2011-11-04 08:00 .bashrc

.বাশ_লগিনের কি সঠিক অনুমতি আছে? এলএস-এল .বাশ_লগিন কী দেয়?
সান্টিয়াগোস্কি

আপনারও কি আছে ~/.bash_profile?
enzotib

-rw-r--r-- 1 gsd gsd 313 2012-01-22 11:56 .bash_login
জিনো সুলিভান

1
chmod +x .bash_login
জোক

1
এটি chmod +x .bash_login(.bash_login এ এক্সিকিউটেবল বিট সেট করা) প্রয়োজন হয় না । এই অঞ্চলে বাশ ম্যানুয়ালটি কিছুটা বিভ্রান্তিকর, তবে বাশ শেল স্ক্রিপ্টের মতো .বাশ_লগিনকে নিরস্ত করে না। এটি ফাইলটি পড়তে পারে এবং তারপরে কমান্ডগুলি কার্যকর করে (আপনি দৌড় দিয়ে এমন কিছু করতে পারেন source ~/.bash_login)।
স্টেফান লাসিউস্কি

উত্তর:


20

.বাশ_প্রোফাইল যদি বিদ্যমান থাকে তবে বাশ .বাশ_লগিন (বা। প্রোফাইল) পড়বে না। এই বিরক্তিকর বৈশিষ্ট্যটি ব্যাশ ম্যানুয়ালটির কয়েকটি সংস্করণে বর্ণিত হয়েছে তবে সমস্তটি নয়।

.bash_profileএবং .bash_loginসাদৃশ্যপূর্ণ, তাই আমি আপনাকে আপনার আদেশগুলি রাখার পরামর্শ দিই .bash_profileকারণ এটি সাধারণত ব্যবহৃত হয় এবং .bash_loginঅপেক্ষাকৃত অজানা। .bashrcপরিবর্তে আপনার কমান্ড স্থাপন বিবেচনা করুন .bash_profile। ম্যানুয়ালটি "ইন্টারেক্টিভ নন-লগইন শেল" এবং "ইন্টারেক্টিভ লগইন শেল" এর মধ্যে পার্থক্য বর্ণনা করে, তাই বিভাগটি পড়তে ভুলবেন না।

জিএনইউ বাশ রেফারেন্স ম্যানুয়াল সংস্করণ ৪.১: ব্যাশ স্টার্টআপ ফাইলগুলি বলে:

সেই ক্রমে b / .Bash_profile, ~ / .Bash_Lgin, এবং ~ / .Pofile অনুসন্ধান করে এবং যেটি বিদ্যমান এবং যা পঠনযোগ্য তা প্রথম থেকে আদেশগুলি পড়ে এবং কার্যকর করে ।

আরো দেখুন সুপারইউজার উপর এই প্রশ্ন এবং এই ব্যাশ হাওটুর (দো freeunix.dyndns.org:8088 ঠিকানা দ্বারা deterred করা --- এটি এখনও একটি ভাল মানের ম্যানুয়াল এবং আমি বছর জন্য এটি ব্যবহার করেছেন)।

আপডেট করুন , যেহেতু আপনি বলেছেন যে আপনার কাছে .বাশ_ প্রোফাইল নেই।

দেখে মনে হচ্ছে আপনি "ইন্টারেক্টিভ নন-লগইন শেল" নামক কী ব্যবহার করছেন না (বিশদ বিবরণের জন্য বাশ ম্যানুয়ালটি দেখুন)।

এই পরীক্ষা করার জন্য, নিম্নলিখিত প্রতিটি ফাইল ভালো কিছু যোগ করুন: .bashrc, .bash_profileএবং .bash_login

echo "DEBUG: I am .bashrc"

echo "DEBUG: I am .bash_profile"

তারপরে লগ আউট এবং আবার লগ ইন করুন। আপনি যখন লগ ইন করবেন, আমি বাজি ধরছি আপনি কেবল "DEBUG: I am .bashrc" শব্দটি দেখতে পাবেন তবে "আমি .বাশ_প্রফাইলে" নয়। যদি তা হয় তবে এর অর্থ হ'ল আপনি একটি "ইন্টারেক্টিভ নন-লগইন শেল", যার সহজ অর্থ হ'ল বাশ কল করবে .bashrcকিন্তু না .bash_profile। এই ডটফাইলগুলি কেন সেভাবে হয় তথ্যের জন্য, নীচে @ আন্ড্রেজ ক্যানিকভসের পোস্টটি দেখুন এবং http://mywiki.wooledge.org/DotFiles দেখুন


আমি আমার প্রশ্ন আপডেট করেছি, আমার কাছে কোনও বাশ_প্রফাইলে নেই
জিনো সুলিভান

ঠিক আছে, কারণ আগে আপনি বলেছিলেন "হ্যাঁ আমার একটি বাশ প্রোফাইল আছে"।
স্টিফান লাসিউস্কি

হ্যাঁ, আমি তখন তা সরিয়ে দিয়েছিলাম তবে একই ফলাফল
জিনো সুলিভান

3
এই উত্তরটি সমস্যার সমাধান করে, আমি মনে করি এটি গ্রহণ করা ভাল।
মারিয়াস বাটুক

1
আরও মনে রাখবেন যে এই ব্যাশ ফাইলগুলি কেবল শেলের মধ্যে লগইন করার সময় (টার্মিনাল, এসএসএস ইত্যাদির মাধ্যমে) চালানো হয়, জিইউআইতে লগ ইন করার সময় নয়!
mivk

6

লগইন শেলগুলি নির্বিশেষে তারা ইন্টারেক্টিভ বা অ-ইন্টারেক্টিভ কিনা তা পড়ুন এবং সম্পাদন করুন.profile

ইন্টারেক্টিভ শেলগুলি পড়ুন এবং সম্পাদন করুন .bashrc

প্রায়শই আপনি সেই /etc/profileউত্সগুলি দেখতে পাবেন .bashrc- এইভাবে তৈরি করা সমস্ত সেটিংস .bashrcএটি ইন্টারেক্টিভ বা অ-ইন্টারেক্টিভ নির্বিশেষে লগইন শেলটিতে কার্যকর হবে।

শেলটির জন্য ইনিশিয়াল স্ক্রিপ্টগুলি সম্পাদনের ক্রমটি শেলটি ইন্টারেক্টিভ বা অ-ইন্টারেক্টিভ এবং যদি এটি লগইন স্ক্রিপ্ট না হয় তবে এটির সাথে সম্পর্কিত নয় তার উপর নির্ভর করে।

যখন বাশকে একটি ইন্টারেক্টিভ লগইন শেল হিসাবে ডেকে আনা হয় এটি থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে /etc/profile। তারপরে বাশ তারপরে কেবলমাত্র প্রথম ফাইল উপস্থিত এবং নিম্নলিখিতটির পাঠযোগ্য and

  1. .bash_profile
  2. .bash_login
  3. .profile

যদি এই ফাইলগুলির মধ্যে একটি পাওয়া যায় তবে এটি পড়া যায় না, এটি ত্রুটির কারণ হবে। যদি কিছু না পাওয়া যায় তবে কোনও ত্রুটি নেই ।

এই একই প্রক্রিয়াটি অনুসরণ করা হয় যখন কোনও অ-ইন্টারেক্টিভ লগইন শেল --loginবিকল্পের সাথে ডাকা হয় ।


1
আফাইক, .profileফাইল কেবল তখনই গ্রাফিকাল ইন্টারফেস ব্যবহার করে লগ ইন করে ফাইলটি পড়ে এবং কার্যকর করা হয়। নাহলে তা পড়ে না।
রাজারভির্মা

@ রাজারভি ভার্মা আমি সবেমাত্র পরীক্ষা করেছি (উবুন্টু ১ 16.০৪) এবং ~/.profileঅবশ্যই গ্রাফিক্যাল লগইন শেলগুলিতে পড়তে হবে (আমি অন্য টার্মিনালে Ctrl+Alt+F2গিয়ে সেখানে লগ ইন করে পরীক্ষা করেছি)।
ওয়াল্ডরিয়াস

আমি @ রাজারভি ভার্মার সাথে একমত - আমি এসএসএইচ-এর মাধ্যমে একটি উবুন্টু 16.04 ভিএম-এ লগ ইন করছি এবং .profileকেবল পড়া হয় না.bashrc
জামেস্ক

0

আপনি যে স্ক্রিপ্টটি চালাতে চান তা নির্বাহযোগ্য কিনা তা নিশ্চিত করুন। chmod +x scriptnameতা করতে দৌড়াও । এছাড়াও নিশ্চিত করুন যে স্ক্রিপ্টটি সঠিক শেবাং ( #!/bin/bashশেল স্ক্রিপ্টগুলির জন্য) দিয়ে শুরু হয়েছিল। শেষ অবধি, এটি কার্যকর করার সময় সমস্ত সম্পূর্ণ পাথ ব্যবহার করুন, উদাহরণস্বরূপ, আপনার স্ক্রিপ্টটি যে পরিবেশটি কার্যকর করবে তার /usr/bin/echoপরিবর্তে echoআপনার ব্যবহৃত অভ্যন্তরের অনুরূপ নয়।


0

ইন্টার .bash_loginবা .profileইন্টারেক্টিভ লগইন শেল হিসাবে কার্যকর করা হলে বাশ কেবল ফাইলগুলির জন্য অনুসন্ধান করে । ইন্টারেক্টিভ নন-লগইন শেল হিসাবে এটি কার্যকর করা হলে এটি পড়ে .bashrc
সাধারণত এটি দ্বিতীয় ক্ষেত্রে, যখন আপনি যখন gnome-terminalব্যাশ চালান তখন অ-লগইন শেল হিসাবে চালিত হয়।

এটি পরিষ্কারভাবে জানিয়েছে যে আপনি যদি জিনোমে বুট .bash_loginকরছেন তবে কার্যকর হবে না। তবে আপনি যদি সরাসরি ব্যাশে বুট করতে রানলেভেল কম করেন তবে সফল ফাইলস লগইন করার পরে একই ফাইলটি কার্যকর করা হবে।
আমি ধরে নিচ্ছি .bash_loginদূরবর্তী এসএসএইচ সংযোগের ক্ষেত্রেও কার্যকর করা হবে।

আংশিকভাবে থেকে ripped এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.