আমি কীভাবে ব্যবহারকারীর পরিবেশের পরিবর্তনশীল সেট করব? (স্থায়ীভাবে, অধিবেশন নয়)


145

এটা আমাকে বিরক্ত করছে। আমি বেশ কয়েকটি পরামর্শ দেখেছি (সমস্তই বিভিন্ন ফাইল এবং সিনট্যাক্স ব্যবহার করে) এবং সেগুলির কোনওটিই কাজ করে না।

একটি নির্দিষ্ট ব্যবহারকারীর জন্য আমি কীভাবে পরিবেশের পরিবর্তনশীল সেট করব? আমি ডেবিয়ান স্কিজে আছি ABC = "123" বানাতে আমার ফাইলটিতে সঠিক সিনট্যাক্সটি কী রাখা উচিত?


7
আপনি ইতিমধ্যে কি চেষ্টা করেছেন?
l0b0

1
.bashrc, .bash_profile,। প্রোফাইল এবং .এসএসএইচ / প্রেরক সম্পাদনা। যদিও আমি জানি না আমি এটি সঠিক জায়গায় লিখেছি বা প্রতিবার সঠিক বাক্য গঠন করেছি

4
.bashrcএটির জন্য মূল জায়গা।
rozcietrzewiacz

@ জারসিটারজেভিয়াক্জ: ঠিক আছে তবে ... সমাধানের পরেও আমি ফাইলটির শুরু এবং শেষের দিকে ABC1 এবং ABC2 সেট করার চেষ্টা করেছি এবং এটি আমার পরিবেশে সেট করা যায় না।

1
এর .bash_profileমতো কিছু রয়েছে যাচাই করুন [[ -f ~/.bashrc ]] && . ~/.bashrc
rozcietrzewiacz

উত্তর:


113

আপনার শেলটির প্রারম্ভিককরণের ফাইলগুলিতে আপনাকে ঘোষণাটি রাখতে হবে:

  • আপনি যদি ব্যাশ, ছাই, কেএসএস বা বোর্ন-স্টাইলের শেল ব্যবহার করেন তবে আপনি যুক্ত করতে পারেন

    ABC="123"; export ABC
    

    আপনার .profileফাইল ( ${HOME}/.profile)। এটি বেশিরভাগ ইউনিক্স ইনস্টলেশনের এবং বিশেষত ডেবিয়ানের ডিফল্ট পরিস্থিতি।

    যদি আপনার লগইন শেলটি বাশ হয় তবে আপনি .bash_profile( ${HOME}/.bash_profile) বা .bash_loginতার পরিবর্তে ব্যবহার করতে পারেন ।

    দ্রষ্টব্য: যদি এই ফাইলগুলির মধ্যে একটি উপস্থিত থাকে এবং আপনার লগইন শেলটি বাশ হয়, .profileআপনি এসএসএসের মাধ্যমে বা কোনও পাঠ্য কনসোলে .bash_profileলগইন করার সময় এটি পড়তে হবে না, তবে আপনি জিইউআই থেকে লগ ইন করার পরিবর্তে এটি পড়তে পারে । এছাড়াও, যদি না থাকে .bash_profileতবে ব্যবহার করুন .bashrc

  • যদি আপনি zsh কে আপনার লগইন শেল হিসাবে সেট করেন তবে এর ~/.zprofileপরিবর্তে ব্যবহার করুন ~/.profile

  • আপনি যদি tcsh ব্যবহার করেন তবে যুক্ত করুন

    setenv ABC "123"
    

    মধ্যে .loginফাইল ( ${HOME}/.login)

  • যদি আপনি শেল ম্যানুয়ালটিতে অন্য পরিবেশ ব্যবহার করে থাকেন তবে পরিবেশের ভেরিয়েবলগুলি কীভাবে সংজ্ঞায়িত করা যায় এবং শেল প্রারম্ভকালে কোন ফাইলগুলি কার্যকর করা হয়।


5
এর ডিফল্ট আচরণ su userহ'ল কলিং ব্যবহারকারীর হোম ডিরেক্টরি এবং পরিবেশ রাখার সময় বর্তমান শেলটির মালিকানা ব্যবহারকারীর নামতে অর্গে পরিবর্তন করা। নতুন ব্যবহারকারী হওয়ার জন্য শেলটি প্রবেশ করানোর জন্য এবং সেগুলির সমস্ত পরিবেশগত সেটিংস ($ PATH, OME HOME, $ ABC, ইত্যাদি) অর্জন করতে আপনাকে su- এর প্রথম যুক্তি হিসাবে পাস করতে হবে। su - usernameআপনি যা চাইছেন তা পূরণ করবে।
টিম কেনেডি

1
অপেক্ষা করুন: "রুট থেকে প্রস্থান" বলতে কী বোঝ? যে কোনও ক্ষেত্রে 'su' তৈরি করা শেলটিকে আরম্ভ করে না । আপনার প্রয়োজন 'সু -' (দেখুন man su)
মেটেও

1
কেন আপনি suপ্রথম স্থানে ছিল? আপনি কি এমন কোনও মূল-মালিকানা তৈরি করেন .profileনি যা ব্যবহারকারীর দ্বারা ব্যবহার করা যায় না?
rozcietrzewiacz

1
@ অ্যাসিড এটি যা করা উচিত ছিল । প্রশ্নটি হল, আপনি লগ ইন করার পরে কী উত্সাহিত হয় check এটি যাচাই করতে, প্রথমে লগ আউট করুন
rozcietrzewiacz

7
যেহেতু .profileসমস্ত বোর্ন-সামঞ্জস্যপূর্ণ শেলগুলি পড়েছে, আপনার সেই ফাইলটিতে বাশ সিনট্যাক্স লেখা উচিত নয়। বিশেষত, export VARIABLE=valueএটিকে রিফ্যাক্টর করা দরকার VARIABLE=value; export VARIABLE
ট্রিপলি

47

/etc/environmentপরিবেশের ভেরিয়েবলগুলি সেট করার জন্য ফাইল ব্যবহার করুন। তারপরে /etc/environmentফাইলের অভ্যন্তরে নিম্নলিখিত লাইনটি যুক্ত করুন।

ABC="123"

এখন এবিসি ভেরিয়েবলটি সমস্ত ব্যবহারকারীর সেশন থেকে অ্যাক্সেসযোগ্য হবে। ভেরিয়েবল আউটপুট পরীক্ষা করতে প্রথমে কমান্ড ব্যবহার করে এনভায়রনমেন্ট ভেরিয়েবল রিফ্রেশ করুন

source /etc/environment

এবং চালান echo $ABC


4
সোর্স কমান্ডের জন্য +1। এটি সমস্ত
উত্তরে

5
সাবধান থাকুন যা /etc/environmentপুরো ব্যাশ সিনট্যাক্সকে সমর্থন করে না, এমন কিছু যা আমি শক্তভাবে আবিষ্কার করেছি। উদাহরণস্বরূপ, নীচের লাইনে রেখে দেওয়া PATH="/usr/bin:/usr/sbin"এবং করা PATH="$PATH:/foo/bar"কাজ করবে না
ব্যবহারকারী 2428118

এটি ব্যক্তিগত সমস্যা বা কী তা নিশ্চিত করুন না, তবে আমি /etc/environmentবাশ টার্মিনালটি পুনরায় চালু করেছি বা টাইপ করলেও আমাকে এটি সেট করার পরে আমার ওএস পুনরায় চালু করতে হয়েছিল source /etc/environment। সুতরাং আপনার যদি পরিবেশের পরিবর্তনশীল স্থায়ী হয় না এমন সমস্যাগুলি থেকে থাকে তবে পুনরায় চালু করার চেষ্টা করুন।
ব্লেয়ারজ 23

9

এটি কোনও সাধারণ পদ্ধতি যা আপনি কোনও শেলের জন্য ব্যবহার করতে পারেন। যে কোনও ক্ষেত্রে, আপনাকে জানতে হবে ব্যবহারকারী সাধারণত কোন শেলটি দিয়ে লগ ইন করে:

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"

তারপরে আপনাকে সনাক্ত করতে হবে যে এই শেলটি সাধারণত কোন ডট-ফাইলগুলি পড়বে:

man $shell

একটি শর্টকাট যা কাজ করতে পারে তা হ'ল শেল নাম ধারণ করে এমন ডট-ফাইলের তালিকা:

ls ~/.*${shell}*

লগইন চলাকালীন যদি ফাইলগুলির মধ্যে কোনও একটি আসলে পড়ে আছে কিনা তা আপনি যদি পরীক্ষা করতে চান তবে আপনি কেবলমাত্র প্রতিটিটির মধ্যে ফাইলের নাম মুদ্রণ করতে পারেন, উদাহরণস্বরূপ:

echo .bashrc

লগ ইন করার সময়, আপনার তখন কোন ফাইলগুলি পড়া হচ্ছে তা দেখতে হবে এবং কোনটি সংশোধন করতে হবে তা আপনি ঠিক করতে পারেন। সাবধান হন যে আপনার ব্যবহার echo "$0"বা অনুরূপ করার চেষ্টা করা উচিত নয় , কারণ $0শেল কীভাবে ডট-ফাইলগুলি প্রসেস করে এবং বিভ্রান্তিকর হতে পারে তার উপর নির্ভর করে।

যখন ভেরিয়েবলটি "স্থায়ীভাবে" ঘোষণার কথা আসে তখন লক্ষ্য করুন যে এটি কেবল অধিবেশন পর্যন্ত প্রসারিত। একটি অধিবেশন ছাড়া কোনও ভেরিয়েবলের মান অ্যাক্সেস করার কোনও উপায় নেই, সুতরাং এটির বাইরে এর কোনও অর্থ নেই। যদি আপনার অর্থ "কেবল পঠনযোগ্য" হয় তবে এটি শেল নির্ভর, এবং বাশে আপনি ব্যবহার করতে পারেন:

declare -r VAR

যদি এর ইতিমধ্যে একটি মান থাকে, বা

declare -r VAR=value

একই সময়ে এটি বরাদ্দ করা। সমস্ত শেলের এই বৈশিষ্ট্যটি নেই।

বেশিরভাগ শেলগুলিতে ভেরিয়েবল ঘোষণার জন্য আপনার একটি ভেরিয়েবলের নাম ( [A-Za-z_][A-Za-z0-9_]*) ব্যবহার করা উচিত , তার পরে একটি সমান চিহ্ন (এবং সমান চিহ্নের আশেপাশে কোনও ফাঁকা স্থান নয় ), তার পরে একটি মান (মানটি সহজ না হওয়া অবধি উদ্ধৃত [A-Za-z0-9_]+)। উদাহরণ স্বরূপ:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1

5

রফতানি ব্যবহার করুন।

export ABC="123"

এটি সেট আছে কিনা তা পরীক্ষা করতে, ব্যবহার করুন

env

এবং / অথবা

env | grep ABC

এটি স্থায়ীভাবে যুক্ত করতে, এটি আপনার ~/.bashrcফাইলে যুক্ত করুন।

export ABC="123"

6
তিনি স্থায়ীভাবে এটি সংজ্ঞায়িত করতে গরম জানতে চান , অর্থাত্ কোন ফাইলটিতে সংজ্ঞা রাখতে হবে।
মেটেও

1
কাজ না। আমি একবার লগ আউট করে ভেরিয়েবলটি চলে যায়। আমার এটির অধিবেশনগুলি জুড়ে দরকার

1
আপনার অর্থ permenateএবং না permenently: ডি
হোয়ামি

জন্য সম্পাদন করা তাকানbashrc
whoami

5
কি permenate? মানে permanent?
এসএসএইচ এই


1

আমার জন্য সবচেয়ে ভাল উপায়ে কাজ করা হল BASH শেলের মধ্যে .bashrc ফাইলটি পরিবর্তন করা ifying

উদাহরণস্বরূপ এটি ব্যবহার করুন:

  1. আপনার .bashrc ফাইলটি খুলুন
  2. এই লাইন যুক্ত করুন:

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    যেমন: export HOME = "/home/user/"

    ব্যবহার ""হিসাবে মনে রাখবেন ' 'কাজ করবে না এবং আপনার বাশার্ক ফাইলটি সোর্স করার সময় ত্রুটির প্রতিবেদন করবে।

  3. বর্তমান সেশনে এটি উত্স।

আমি / ইত্যাদি / এনভায়রনমেন্ট ফাইলটিও সংশোধন করার চেষ্টা করেছি কিন্তু এটি আমাকে একটি নতুন পরিবেশের পরিবর্তনশীল তৈরি করতে দেয়নি এবং যখন আমি এটি স্রোস করলাম তখন এটি ত্রুটিটি প্ররোচিত করেছিল যে সংজ্ঞায়িত ভেরিয়েবলটি পাওয়া যায় নি।

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