======sysprog Journals====== ====MONTH Day, YEAR==== This is a sample format for a dated entry. Please substitute the actual date for "Month Day, Year", and duplicate the level 4 heading to make additional entries. As an aid, feel free to use the following questions to help you generate content for your entries: * What action or concept of significance, as related to the course, did you experience on this date? * Why was this significant? * What concepts are you dealing with that may not make perfect sense? * What challenges are you facing with respect to the course? ======unix Journals====== ====First 2 chapters of Unix for the Beginning Mage.==== The Command Prompt is the super magical spellcasting area. It's where you summon your creatures for battle, your sorceries and enchantments for stat buffers and where you play instances that can interfere with your opponants strategy(well, maybe not that lst one, but you get it. ) ==__Command: 'whoami'__== prints the name of the host user commanding the prompt, IE the name of your spellcaster. IE,My name is alex, but on skyrim I have a character named Improper Grammar Dessimator. (because to Dessimate, one only needs to have to attempt to correct improper grammar.) ==__Command: 'cp'__== this copies files ==__Command: 'mv'__== this moves files ==__Command: 'rm'__== This removes files (in magic, it would remove it from the game) ==__Command: '/'__== this is the root, the root of the filesystem in which you can make a pathway to other files, like the front door of your house. This is the starting point to which you connect to other files (like walking into the front of your house, as you step into the living room, the code would be: =='/ living room/'== =If you were to want to travel to the sofa in the living room, the code would be:= ='/living room/ sofa'= =notice how you would have to start at the root '**/**' then enter the living room, and from there sit on the sofa.= =RELATIVE VS ABSOLUTE Path:= =the last example of '/living room/ sofa', is considered to be an ABSOLUTE path, because one has to start at the front of the house.= Now Consider: '**sofa/living room/**' this would be considered a a RELATIVE path because you are starting from the current location and then continuing onto a different location, from the sofa in the living room to just standing in the living room ==__Command: '..'__== This command tells this system that you are leaving your current location so, say if you were in the living room. by entering =='../kitchen'== this would imply you leave your living room and continue into the kitchen, because the kitchen is not in the living room(unless you live in one of those super cool 10x10 studio apartments in NYC, in which case, every room is in one) ==__Command: 'pwd'__== This is an acronym for "print working directory" This tells you where you're at. So after a long night of drinking hard, you might wake up in the morning and be like "where am i ?!". By using this command it will hopefully tell you are in: =='/your house/your room/your bed/'== but sometimes it may be: =='/some city/ some alley/ some cardboard box'== In which case you may want to lay off the drinking so much, but that's besides the point. ==__Command: 'mkdir 'argument''__=== This command creates a new directory, kind of like creating an addition to your house, the name of that addition is what is placed in the argument so say if you were in your living room, and you just bought a coffee table to hold all your super awesome gamer magazines you would cast these: When already in your living room, you place the coffee table there. the code would be: =='mkdir coffeetable'== this creates directory in the existing directory, much like the different room of the house, but there are things in some rooms that aren't in others. ==__Command: 'cd'__ 'name of desired directory to switch to'== this stand for change directory if you were to take the last example, were already within your living room and used this command: =='cd coffeetable'== it would take you out of your living room and shrink you down into the coffeetable. (insert some benign "Honey, I Shrunk the Kids!" Reference here) ==CONDITION: 'cd' with no argument or with a '~' afterward will take you to the home directory, or your front door.== ==CONDITION: 'cd ..' will take you to the directory before the one you are currently in== ==CONDITION: 'cd' 'ABSOLUTE PATH' will take you to anywhere you want to go. == ==__Command:** ls**__== ls stands for list, which simply lists the contents of a directory. So if you were in **/living room/coffeetable** and then commanded ls, it would be like : GamerWorld, You play games too?! etc. __ ====2/1/13 Alex Hughes 'Mage ch. 3.' 'Basic file and directory copying and navigation'__==== ===Creating Empty files=== ==_Command: 'touch 'name''_== This Creates a blank file. to know if something is a file and not a directory, use *cd* and the name of the thing you wish to see if it is a file. If cd fails, then it is a file. ==_Command option: 'ls -F'_== the - calls an option of the command '-F' makes the command 'ls' list only the files in the current directory you are in. =='Editing Files'== ==_Command: 'nano 'name''_== an interactive command that produces a text editor ==_nano interactions:_== ='^' = control key= ==_Command: 'cat'_== Splits the content of the file to the terminal so when you use nano to edit a file, the text you put into the file will be spit out into the terminal with cat ==_command: 'less'_== a interactive command that supports paging paging uses the command 'more' and 'less' to navigate ==='Copying and Moving Files'=== ==_Command: 'cp 'name of file' 'name of copy''_== copies the file into the other file. ==_command: 'mv 'name' 'location of where you wish to move file to''_== Moves the file named to the location from the files current location ='sending files to the grave'= ==_Command: 'rm'_== Removes file ==_Command: 'rmdir'== removes directory --->option '-rf' - stand forrecursive force, which keeps the prompt from asking wether or not you wish to delete the directory and automatically deletes it. ==='Making Shells'=== ==_Command: 'echo $SHELL'or('echo $shell')_== ==_Command: 'history'== prints all typed and entered into prompt by the user. Pressing the 'Tab' key once with the condition of letters will show you the commands entered with those letters =='changing your prompt'== with Bash: =='PS1=""== with other Shells: ==set prompt=<"My New Prompt>"== .. ==== Hahns - Chapter 9. ==== ===_Key Words:_=== RTFM (Really Try For Myself)(Read the fucking manual) -Try to solve the Problem or find the information for yourself before you ask for help, when others ask of you for your help, give willingly your time. ==_Command:_ 'man [command name(s)]'== This command accesses the user manual and prints the reletive information about the command name. ==_Command:_'less,more,pg'== Any one of these are page viewer programs, which are opened with the use of the command, the most popular that being of 'less' ===_'using the UNIX Online Manual and the Accompanying Commands'_=== _In man, '**/**'( pattern ) _ This searches man for a pattern associated with a word, to enact the search throughout the manual for this pattern, you have to press retuen, or enter. ==n== goes to the next pattern in the search, ==? (pattern) == will go back =='!' 'man (command)'== will allow you to open up another man terminal whilst already in one. =='man (number 1-8) (command)'== this tells UNIX what section of the manual to look for the command. the number being a different section, each with their own specific levels of commands. =(this may need -s before on some systems)= =='man -f (command)'== =or 'whatis (command)'= This only shows the description, instead of the whole manual page =='man -k' (keyword)== =or 'apropos manual' (keyword)= This searches the manual for all encompassing strings that match your keyword, including other commands that use that keyword. ===_'HINT'_ If you want to view commands that are built into the shell== =='man bash'== =='man ksh'== =='man csh'== ===_The INFO Manual_=== =='which info'== =='type info'== =='whence info'== or =='man info'= =_the 'info' manual allows information to be linked and to access those links to further access more information, unlike 'man'= =much like that of a website. (ughh, but it was developed by the emacs developers...)= ====Alex Hughes ==== ====Harley Hahns Ch.23==== ====Unix FileSystem==== ===The Types of Files=== _1.Ordinary_ - Contains data, most of the files that the user works/ interacts with. - 2 types, text and binary. _2.Directories_ - I pitty the fool who doesn't organize their files in directories. - Essentially directories are pointers to other files, or other directories, that point to files. **/proc** - this goes to the proc file directories, part of the pseudo files below. **ls /proc** to list them files ! _3.Pseudo Files_ - These files are service files, they access the kernal and central elements of the OS. - Special: In the category of Pseudo Files there are SPECIAL files, which are primarily device files. - a device file is that which represents physical objects that interact with yo (yes, i meant to type'yo') machine. such as a keyboard, mouse, hard disc etc... - Pipe. Another type of pseudo file is that of a pipe, which connects the output of one program into the input into another. - Proc: A file that gains access to (and in some cases, change) the kernal data itself 3.1 Hardware: **/dev/[name]** - device directory 3.2 Terminal: **/dev/tty[#]** - terminal **/dev/pts/0** or, **/dev/ttyp0** - Pseudo terminal 3.3 Pseudo Devices: **/dev/null** - discard output, input returns nothing **/dev/zero** - discard output, input returns nulls(this is important, sometimes you gotta send somethin!) **/dev/random** - random number generator, has some redunduncy **/dev/urandom** - random number generator, can be slow from having to collect noise 3.4 Pipe Files: **File output | file input** the **|** key is a command for a single instance pipe. **mkfifo** - fifo satands for file input/ file output - use to maked named pipes Anonymous vs. NAMED - Named pipes continue to exist until deleted, anonymous pipes are single instance commands. 3.5 Proc Files **ls -l /proc/kcore** - wanna see the memory of your system!? _Mounting Vs. Unmounting_ Every storage device has its own directories and subdirectories, in order to connect two more devices, the smaller device root need to be connected to a specific directory in the parent device. The Connection is called a MOUNT. The directory that the smaller filesystem is located in the parent device is called the MOUNT POINT. **mount [device directory] [main tree directory location]** - mounts a device manually the device directory is the root of the device itself, whereas the main tree directory is where access to that devices directories on the system. - the main tree directory has 2 types fixed, and removeable. the fixed is used for titems like hard drives and other coponants that will be permanently attached to the computer. removeable are things like CD's Flash drives etc. **/mnt** - the fixed mount directory **/media** - the removeable mount directory **umount** - unmounts a device manually ====Alex Hughes==== ====Ch.4+5 Mage==== ====Partitions and Access==== _**/bin**_ - this holds commands! **df** -(stands for disc filesysyems) lists all partitions, the memory allocated for certain key storage programs, lists amount of allocated memory that is in use, the location of the partion, and keeps that allocated memory from being accessed by everyone, so that only certain people with access can modify or access that memory. **groups** - all the groups your user is a part of. ==ls-l== **ls -l** - this lists a bunch of stuff about the directory you're in. - 1.lists the read (**r**), Write(**w**), and execute(**x**) access to files, in three groups of the user, the group, and other, otherwise known as the **UGO**. - 2.number of links to the file - 3.Owner of the file - 4.What group the file belongs to - 5.the size of the file in bytes. - 6.The month the file was created. - 7.The day the file was created. - 8.the time the file was created. - 9.the name of the file ==chmod== **chmod [(UGO) (+/-) (RWX access)][name of file changing]** - Change mode - This allows you to put a file or directory in a shield, or protect it so that only users with access can change its memory. the first argument states whether you are giving the user(U), Group(G), or everyone else or other(O), read(r), write(w), or execute(x) access. you give them RWX access with a **+** sign and take away RWX access with a **-** sign If one were to want to give the same **RWX** access to **UGO**, one could use **a** instead, for All multiple commands to **RWX** and **UGO** can be done simultaneously with a comma: User with RWX access and Other with only RX access:**chmod U+RWX,O+RX** This can also be done with a numeric value, with read = 4, write = 2, execute = 1, none = 0. With each user in the UGO getting a numeric value for each RWX group. for the user to get all access, it would add to 7, or RWX 4+2+1,for read and execute it would be 5, or RX 4+1, and so on and so forth. for this mod, a number must be assigned for each UGO group, otherwise it will only modify the other group, and erase the other user and groups RWX access. IE: **chmod 777 [filename]** - gives RWX access to all UGO users. **chmod 666 [filename]** - gives RW access to all UGO users. etc....... ==types of files in ls -l== **-** - Plain File **d** - Directory **l** - Link **p** - Pipe **b** - Block Device **c** - Character Device ==Hard links== links are copies of files that span file system. **ln [file 1][file 2]** ====Case Study x 01==== ==Number 1:== To copy the files in the archives folder: **cp** archive1.tar.gz **~** This copies the file and puts it into the home directory **~** Repeat for archive2.zip ==Number 2:== To extract archive1.tar.gz , first, you gotta go to your home directory to access write access to your copied files. **cd ~** second **tar -zxvf archive.tar.gz** (I had to look this up on them there internets to find all the options to decompress) to decompress that shiz third to unzip archive2 **unzip archive2.zip** ==Number 3:== **tar -cf arc.tar filea fileb filec filez** -c creates the compression f creates the file ==number4:== **gzip --best filea fileb filec filez** ====Case Study x 02==== ==1. Use the * wildcard== from the path /src/unix/badname: **chmod 777 -R exercise** this gives write and read access to errryone. **nano just\ a\ simple\ file.txt** **rm "??? can you delete me ???.abc" ** **mv "change my\ name.file" No_I_Will_Not.file** and so forth ==2. Using the escape **'\'** character== ==3.Change to the /challenge subdirectory== **rm ./"- challenge round -"** then type yes and enter ====Ch. 21 Harley Hahns ==== ===Pagers=== **less**, **more**, **pg**, **cat** Others for specific parts of a file instead of a whole file. **Head** For the head of a file **tail** to display the end of a file **grep** a pager is a command that displays the contents of a file. **less (name of file)** (to see more about **less** refer to pages 527 through 535 of Hahns ) You can edit the pager your system uses by default when a program calls the Pager program for display. this is done by: Bash: **export PAGER=** then put in the pager you would prfer to use, primarily is is **less** so it would be **export PAGER=less** C-Shell: **setenv PAGER less** ==less Navigation== = = Commands: **:n** change to next file in list **:p** change to previous file in list **:x** change to first file in list **:e** insert a new file into the list **:d** delete current file from list **:f** display name of current file (same as **=**) **=**same as **:f** ** /* **(pattern) - search forward for a specified pattern ** ?* **(pattern) - search backward for a specified pattern ===vi=== == == **vi** be a text editor **vi -R** - Read only mode! to keeo you from changing important stuffssss ===hexdump, od=== == == **hexdump -C (command path) | (command)** - displays command in canonical format **od -Ax -txlz (command path) | (command)** - displays command in canonical format ==od options== = = **-A** - address **x** - canonical output **-t** - type of format **x1** - display canonical format **z** - display in hex one byte at a time **-j (bytes ie:0x120)** - jump over bytes declared **-N (bytes ie:96)** - Limit output to bytes these display binary data. Also, Learn how to count in multiple number systems, DO IT. ===whereis=== == == **whereis (command)** - displays the path to the location of a command =====Ch.11 Harley Hahns===== ==== ==== **The Shell** - The Shell is a User interface and script interpretter. or a COMMAND PROCESSOR ====Shell Command Types==== === === **sh**- Enter shell, start work session, enter commands, shell processes commands and then sends a new shell prompt. the Bourne shell eventually adapted the standard title in 1975 **ksh** - the KORN Shell - an inprovement to the **sh** Bourne capabilities **bash** - The free shell devolped by users for the a$h-Holes at AT&T ====C-Shell==== === === **csh** - A shell based off and expanded from the original **sh** shell, but expanded with major improvements like aliases. was also created by Bill Joy, ans he's awesome, because he made **vi** **tcsh** - the free version of **csh** developed by ken greer. the Bourne Family Shells were better at programming and shell scripts, so C-Shells got phased out of use. **Hahns found it pertinent to state that C-Shells are not widely used, but highly regarded, and that Bourne Shells are better, but then goes on how to use them. I don't find this important** ====Shells and using them!===== === === There are many different types of shells and the commands for them may alias other versions, but this isn't entirely imporant for beginers. open command: **sh** - may open **bash** or **ksh** shells open command: **csh** - may open **tcsh** by default ===Remote Shells=== == == **ssh** - Secure Shell **rsh** - remote Shell **Changing to a different shell** = = Shells are treated just like any other program, your operating system just has a default in which it is set to. In order for you to try another shell, you just have to type the name of the shell as a command, then the system will pause the default shell, and open the shell you had commanded to open. IE: If you have a default shell of **bash** and you would like to open **tcsh** you just type and execute the **tcsh** command and use **^D** to exit the **tcsh** program. ===To View the Shells Available on your system=== ==View:== '**less**(or any other text editor) **/etc/shells**' or '**chsh** [**-1**] **Changing Shells: chsh or passwd** =Howto:= you can change your login shell you use the **chsh** command which functions with 2 parameters and options **chsh** [**-s** shell] [userid] =====Ch.12 Harley Hahns===== ====The Shell==== ===Display:=== Display Current Shell: **echo $shell** Names and types of terminals being used: **TERM, xterm, linux, vt100, ansi;** ====Variables==== ===Variable Interaction:=== There are only 4 ways in which to interact with variables: Create, Check Value, Change Value, and Destroy ===Local Vs. Global=== ==Types and Definitions:== Two types of variables are **Local** and **Global** **Local** - variables that are located and only have a scope of influence in the place in which they are created. **Global** - Variables that are located in one place, but have a scope that is wider than simply in the place they are created. ===Displaying Environment Variables=== ==Commands:== **env** - Display the default Environment variables. **printenv** - display default variables. Use **less** - to display one page at a time of environment variables use **sort** to display variables in alphabetical order IE: **env | sort | less** This is a **pipeline** command. It implements many commands at once. ===To display the Shell Variables=== ==Commands:== **set** - display all shell variables **echo ${Terminal Type}** - display a single shell variable. IE: **echo $TERM** ===Declaring and Creating Variables=== ==Commands and use:== Use all caps with a equal sign after, this creates a shell+environment variable(in Bourne Shells). non bourne families - in other shell families, the **export [VARIABLE]** command needs to be used to make a created variable both shell and environment variables. one could also use an expression to create and declare a variable to environment: **VARIABLENAME=variablecontent ; export VARIABLENAME** ===Removing/Deleting Variables=== ==Command:== **unset VARIABLENAME VARIABLENAME**etc... ===C-Shell Variable Differences=== ==Explanation:== The C-Shell Family has a more clear distinction from global and envirionment variables than the borne shell family, the bourne shell family only has shell(local) variable and combination variables that are both shell(local) and environmental(global). The C-shell family uses unique Environment(global) variables. As such there are different commands for these shells. To set(create) and unset(delete) shell variables the **set** and **unset** commands are used. To create and delete environment variables the **setenv** and **unsetenv** commands. If you create a variable without giving it content, it will be set to **NULL** ===Shell Options (Bourne Shells)=== Shell options are that in which control the operation of the shell. **set -o** - Displays all shell options **set +o** - Displays shell options data to be used in a script send either to **less** to display in an easier manner to read. - For you to change your shell, you have to have the other shell in the **/etc/shells** directory, and you can only change your user id settings, you cannot change another users shell setting unless you are a superuser(The Sayian of Users). -some systems don't have a **chsh** command so **passwd** is used with the [**-s**] option on AIX, and the [**-e**] on solaris. As System Administrator, the way to change someone else's shell is to use **usermod** with the option[**-s**](see **man** for more implementation) =====Ch.13 Harley Hahns===== ====Using the Shell: Commands and Customizations==== ===Metacharacters=== ==Definition:== Metacharacters are characters that have special meanings and functionality that is specific to the shell. ===Use:=== Because there are so many damned metacharacters for specific uses, it would be redundant to list them here, it would be like trying to list all theo words in the dictionary. At some point, from using them, it will become apperent what should be used when. I will just describe the ones used as they are mentioned in this and the upcoming chapters. A few of which have already been explained, but not as that they are metacharacters. ====Metacharacters: Nullifying Metacharacters and printing them literally==== sometimes it is pertinent to print a metacharacter and not have it be enacted by the shell, for viewing and explaining purposes, there are a few ways in which to do this. ===the Backslash=== placing a **\** before a metacharacter in a sentence will nullify it from being enacted by the shell ==IE:== **echo mike wizowski \; you didn't fill out your paperwork** The **;** in this instance has been ketp from enacting by the **\** character This implies that the **\** is an escape character, in that it changes the mode the shell interprets the following character. The **\** is good for single characters, but it can get tedious for multiple characters you wish to escape, in that instance, there are other ways to escape from other metacharacters. ===the single quote=== ==IE:== **echo 'mike wizowski; you didn't fill out your paperwork'** by encasing the entire statement after **echo** it escapes all metacharacters that ly within them. ===the double quote=== The double quote is used to escape displaying metacharacters, but for variables that can output a value, it does not escape the **$** character and the variable name, so that the value of that variable can be displayed. ==IE:== **echo "mike wizowski; you didn't fill out your paperwork, <$TERM>"** This will print the value of **<$TERM>**, while escaping the **;** character within the quotes. the double quote only recognizes 3 characters to not escape: 1.**$** - Value 2.**`**(backquote) 3.**\** - specific character escape ====BUILTIN vs. EXTERNAL Commands==== ===Process:=== When a Command is enteres the shell breaks it apart into sections, or parses it. It breaks it into the 1.name and 2.Arguments/options of each command. ==The Difference== When a command is BUILTIN, it is run directly by the shell within its own process. When a Command is EXTERNAL, the shell searches for a specific program and runs it in a seperate process. ===Checking whether a command is BUILTIN or EXTERNAL === ==Command:== **type [command]:** **type** is a command that will output the **path** to EXTERNAL Commands, and state whether or not if the command is a shell command, also called a BUILTIN command or KEYWORD(specific for shell scripts). ===Listing BUILTIN Commands with man=== The **man [command]** pages work well for external commands for viewing, however, one cannot view BUILTIN commands because they are not seperate programs, they are within the shell program. ==Viewing Builtin Commands== To do this you need to view the **man** page for the shell itself so it would be: **man bash:** (or whatever shell you are using) Other systems have seperate man pages for their BUILTIN commands, but this is system dependendat. to tell whether or not this is the case for your system use: **apropos builtin** Which will print the place in which the commands are held. ===How EXTERNAL commands are executed by the shell=== Because EXTERNAL Commands are not enacted directly by the shell itself, it has to find and execute them seperately. It does this by searching a standard **PATH** search within the **/bin** or **/usr/bin** directories, or something along those lines, to find and execute those commands. ====Modifying Search PATHS==== the **PATH** variable is the where the shell searches for external commands. In most circumstances this is set for you in default places, however, sometimes it is necessary to declare the **PATH** for the shell to find a command that is not in a standard **/bin** directory. ===the export command=== the **extort** command allows for the **PATH**(or **path** in C-shell families) variable to become an EXTERNAL variable, and then that variables' content needs to be set for the **PATH** to be set to the right directory. ==IE== **export PATH="/bin:usr/bin:/usr/ucb:/usr/local/bin"** (in C-Shell Family the **set path= [path]** command is used for the same result) **Reasoning** Sometimes Shiz just aint where it ought to be, or its where it ought to be, and ya'll gotta go find it, and let the machine know where it is for it do to its shiz. Kinda hard to take a shiz when you don't know where the bathroom is! ==Shell Script Use== Say you write a shell script, that has its own **/bin** directory(**$HOME/bin**), you would want the shell to enact those commands and the **PATH** of $HOME would needed to be changed in order for the shell to find those commands. **IE** **export PATH="$HOME/bin:$PATH"** This changes the value of **PATH** to the value of **$HOME** in the **/bin** directory of the EXTERNAL of **HOME**, allowing your script to find its shiz. the **:$PATH** at the end makes it so the **PATH** still retains its standard searching directories as well, instead of completely erasing the standard **PATH** and replacing it with **HOME/bin**. By putting **HOME/bin** in the front it allows the **HOME/bin** directory to be searched for commands first, by putting it at the end it does the oppisite. ====NEVER PUT YOUR ROOT INTO YOUR PATH VARIABLE==== if you do this you will be **HACKED** and you probably deserve it as well. by implementing the **root** into the **PATH** you open yourself up to allow other people to access everything on your system without needing a password. DON'T Do it ====Shell Prompts==== **$** - Bourne Shell Fanily **%** - C-Shell **>** - Tcsh **#** - root on either shell system ===Modifying the Shell Prompt=== The Bourne shell family has an EXTERNAL variable named **PS1** that holds the value of the prompt. Because it is an EXTERNAL variable it can be set eith the **export** in Bourne shells and **set** in C-Shells. ==IE== **Bourne:** **export PS1="$ "** **C-Shell** **set prompt = "> "** or, **set prompt = "% "** ====Command Substitution==== COMMAND SUBSTITUTION = This Embeds one command with another, executing an embedded command and then replaces it by its output. The **`**(Backquote) character tells the shell to execute commands in 2 parts. ===IE=== ==echo "the time and date are `date`."== **What it's doing:** it evaluates **date** first due to the **`** (backquote), and replaces its value into the space within the backquotes, and then continues to evaluate the rest of the command. so if the date were Monday April 5th 3013 at 8 am the command would read: **echo "the time and date are Mon Apr 5 08:00:00 EST 3013"** which would then just print: **the time and date are Mon Apr 5 08:00:00 EST 3013** ====The History List==== the history list is the list of commands that have been sent to the shell. ===The bourne shell history list=== ==fc -l== **fc stands for "fix command** other options allow you to execute members of the list such as: **fc -s [command number within list]** ===the C-Shell history list=== to execute members of the list: **![number on list]** ==history== ===history list size=== the list size is the amount of commands that are saved into the history value this can be changed using the variable: ==HISTSIZE== and can be set with the **export**(or **set** in C-Shell) command: **export HISTSIZE=[size you wish to save]** ===the rest of the chapter is aliases and autocompleting that I can do without the extended detail as of right now=== =====Ch.14 Harley Hahns===== ====Initialization Files==== Initialization files are that in which customize your shell and be executed automatically upon your behalf. ===Environment vs. Login=== Environment files are the files in which you put all the commands you wish to be executed everytime a new shell starts and Login files for everytime you log in. ===Running Bash in POSIX=== yo fool? got a shell script that needs to be POSIX compatible? Start it with the **--posix** option. so it'd be **bash --posix** ====DOTFILES and rc Files==== Dotfiles are hidden files **rc** files are initialization files for their encompassing named programms/commands. ===IE=== ==.exrc== which is the initialization file for the **vi** and **ex** text editors. ====When Initialization files are executed==== ===Non-login files Files=== ==Non-login files only execute you environment variables== ==Login Files only execte after logining in== ====Bash login and environment==== ===Bash Login:=== **.bash_login** ===Bash Environmental=== **.bashrc** ====The rest of this chapter is just implementing into the environment and login files all that has been explained previously in the past 4 chapters==== ====MONTH Day, YEAR==== This is a sample format for a dated entry. Please substitute the actual date for "Month Day, Year", and duplicate the level 4 heading to make additional entries. As an aid, feel free to use the following questions to help you generate content for your entries: * What action or concept of significance, as related to the course, did you experience on this date? * Why was this significant? * What concepts are you dealing with that may not make perfect sense? * What challenges are you facing with respect to the course?