> For the complete documentation index, see [llms.txt](https://sh.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sh.howtocode.dev/2.0.0.part2intro/2.1.0.environment/2.1.3.envmodify.md).

# এনভায়রনমেন্ট পরিবর্তন

আমরা জেনেছি এনভায়রনমেন্ট এরপ প্রয়োজনীয় স্টার্টআপ ফাইলগুলো কোনটি কোথায় থাকে। সেগুলোকে সম্পাদন বা এডিট করলেই আমরা এনভায়রনমেন্টের পরিবর্তন ঘটাতে পারবো।

ডিরেক্টরিকে পাথ(PATH) এ যোগ করতে(পাথ বলতে এক্সিকিউটেবল পাথ বোঝানো হচ্ছে। অর্থাৎ, সিস্টেম এক্সিকিউটেবল প্রোগ্রামগুলো ডিফল্টভাবে কোন কোন ডিরেক্টরিতে খুঁজবে।) এবং অতিরিক্ত এনভায়রনমেন্ট ভেরিয়েবল যোগ করতে .bash\_profile(কোনো কোনো ডিস্ট্রিবিউশন যেমন উবুন্টুতে .profile) ফাইলটি ব্যবহার করুন। বাকি সবকিছু .bashrcতে। আর এমনকিছু যদি থাকে যা সকল ইউজার এর জন্য কার্যকর হবে তাহলে তা /etc ডিরেক্টরির profile এ করতে হবে। আপাতত আমরা .profile বা .bash\_profile এবং .bashrc এরকম ব্যক্তিগত স্টার্টআপ ফাইল এডিট করবো।

### টেক্সট এডিটর - আপাতত যা দরকার

টেক্সট এডিটরের সাথে পরবর্তীতে আরো ভালোভাবে পরিচয় করানো হবে। গ্রাফিক্যাল টেক্সট এডিটর আমরা অনেক ব্যবহার করেছি। তবে বইটা যেহেতু কমান্ডলাইনের উপরে তাই আমরা **nano** নামের একটা কমান্ডলাইন টেক্সট এডিটর ব্যবহার করবো। এটা বেশ সহজ। আয়ত্ত করা মোটেই কঠিন না। **nano** চালু করতে হবে এভাবে:

```
nano file_or_files
```

অর্থাৎ প্রথমে কমান্ড এবং তারপর এক বা একাধিক ফাইলের নাম। ওই ডিরেক্টরিতে ফাইলটি থেকে থাকলে ওই ফাইলটি খুলবে নাহলে নতুন ফাইল তৈরী করে নেবে। আমরা যদি হোম ডিরেক্টরি থেকে এই কমান্ড দিই:

```
me@howtocode-pc:~$ cp .bashrc .bashrc.bak
me@howtocode-pc:~$ nano .bashrc
```

প্রথমে আমরা .bashrc ফাইলটার একটি ব্যাকআপ ফাইল তৈরী করলাম তারপর nano দিয়ে ফাইলটি খুললাম। তখন স্ক্রীনে এরকম কিছু দেখাবে:

```
  GNU nano 2.2.6                File: .bashrc                                       

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
                                 [ Read 117 lines ]
^G Get Help   ^O WriteOut   ^R Read File  ^Y Prev Page  ^K Cut Text   ^C Cur Pos
^X Exit       ^J Justify    ^W Where Is   ^V Next Page  ^U UnCut Text ^T To Spell
```

সবার প্রথমে বামে টেক্সট এডিটরের নাম ও ভার্শন এবং মাঝখানে ফাইলের নাম। তারপর ফাইলের কন্টেন্ট। একদম শেষ তিনটি লাইনের প্রথম লাইনে ফাইলে লাইন সংখ্যা লেখা আছে। এখানে বিভিন্ন সময় বিভিন্ন প্রয়োজনীয় তথ্য জানায়। তারপর দুই লাইনে দরকারি কমান্ডগুলো। যেমন: ^G Get Help বা ^O WriteOut। এখানে '^' চিহ্ন দিয়ে কন্ট্রোল(Ctrl) কী বোঝায়। অর্থাৎ ^G অর্থ কন্ট্রোল চেপে g চাপতে হবে। এবং এটা চাপলে হেল্প দেখাবে। তেমনি ^O চাপলে রাইটআউট অর্থাৎ ফাইল সেভ করবে। সকল কমান্ডের লিস্ট ^G চেপে দেখে নিতে পারেন।

এ্যারো কী চেপে আপনি কার্সর যেখানে খুশি নিতে পারেন এবং লিখতে পারেন সাধারন গ্রাফিক্যাল টেক্সট এডিটরের মতই। এর বাইরে সবচেয়ে গুরুত্বপূর্ণ বোধহয় কাট, কপি ও পেস্ট করা। কিন্তু কাট বা কপি করতে গেলে আগে প্রয়োজনীয় অংশটুকুকে নির্বাচন বা মার্ক করতে হবে। যেখান থেকে মার্ক করতে চান সেখানে ^^ চাপবেন। অর্থাৎ কন্ট্রোল চেপে ^। '^' চিহ্নটি 6 এর উপরে থাকে। অর্থাৎ আপনাকে কন্ট্রোল ও শিফট চেপে 6 চাপতে হবে। এরপর নীচে 'Mark Set' লেখা আসবে। এবার আপনি এ্যারো কী চেপে পছন্দের অংশটুকু সিলেক্ট করতে পারেন। মার্ক করে নিয়ে কপি করতে চাইলে M-^ চাপতে হবে। M হল মেটা বা অল্টার কী(Alt) অর্থাৎ আপনাকে অল্টার ও শিফট চেপে 6 চাপতে হবে। কাট করতে চাইলে ^K চাপতে হবে। এবং পেস্ট করতে চাইলে ^U।

ফাইল সেভ ও ক্লোজ করতে যথাক্রমে ^O এবং ^X চাপতে হবে।

## হাতে কলমে

এবার আমরা স্টার্টআপ ফাইল এডিট করবো। আমরা যা করবো তা হয়ত আগেই করা আছে। তবে দ্বিতীয়বার করলে ক্ষতি নেই। প্রথমে `nano .bashrc` কমান্ড দিয়ে .bashrc ফাইলটি খুলুন আর তার শেষে লিখুন:

```
export HISTSIZE=1000
alias ll='ls -lAh'
```

তারপর ^O চেপে সেভ করুন এবং ^X চেপে ফাইল ক্লোজ করুন।

`export HISTSIZE=1000` দিয়ে আমরা HISTSIZE ভেরিয়েবলের মান 1000 করে দিয়েছি। ফলে কমান্ডহিস্ট্রি শেষ ১হাজারটি সংরক্ষণ করবে। `alias ll='ls -lAh'` দিয়ে আমরা `ls -lAh` কমান্ডটির একটি এলিয়াস বানিয়েছি ll নামে। অর্থাৎ ll কমান্ডটি দিলে লং লিস্ট দেখাবে হিডেন ফাইল সহ। এবং ফাইলগুলোর সাইজ বাইটের বদলে পড়ারযোগ্য এককে(যেমন 22K বা 1.2G) দেখাবে।

আমরা যে পরিবর্তন করলাম তা কিন্তু এখনো কার্যকর হয়নি। কার্যকর করতে হলে শেলকে বলতে হবে কনফিগারেশন ফাইলটি আবার পড়তে। সেজন্য আমরা এই কমান্ডটি দেবো:

```
me@howtocode-pc:~$ source .bashrc
```

এবার **ll** কমান্ডটি দিয়ে দেখুন।


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sh.howtocode.dev/2.0.0.part2intro/2.1.0.environment/2.1.3.envmodify.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
