Integrating a Command Shell Into a Web Browser

Total Page:16

File Type:pdf, Size:1020Kb

Integrating a Command Shell Into a Web Browser Integrating a Command Shell Into a Web Browser Robert C. Miller and Brad A. Myers Carnegie Mellon University {rcm,bam}@cs.cmu.edu Abstract This command uses ps to list information about running processes, grep to find just the xterm processes, awk The transition from command-line interfaces to graphi- to select just the process identifiers, and finally kill to cal interfaces has resulted in programs that are easier to kill those processes. learn and use, but harder to automate and reuse. Another These capabilities are lost in the transition to a graphical transition is now underway, to HTML interfaces hosted user interface (GUI). GUI programs accept mouse clicks by a web browser. To help users automate HTML in- and keystrokes as input and generate raster graphics as terfaces, we propose the browser-shell, a web browser output. Automating graphical interfaces is hard, unfor- that integrates a command interpreter into the browser’s tunately, because mouse clicks and pixels are too low- Location box. The browser-shell’s command language level for effective automation and interprocess commu- is designed for extracting and manipulating HTML and nication. Attempts to introduce Unix shell features like text, and commands can also invoke local programs. pipelining into graphical user interfaces [3, 6, 7, 8, 15, Command input is drawn from the current browser page, 16] have been unsuccessful, largely because they were and command output is displayed as a new page. The not integrated well with existing applications, required browser-shell brings to web browsing many advantages extra work from application developers to expose hooks of the Unix shell, including scripting web services and and programming interfaces, or were too hard to use. creating pipelines of web services and local programs. A browser-shell also allows legacy command-line pro- With the advent of the World Wide Web, another tran- grams to be wrapped with an HTML/CGI interface that sition is underway, this time to distributed web applica- is graphical but still scriptable, and offers a new shell tions that run on a web server and interact with the user interaction model, different from the conventional type- through a web browser. Most web services accept input script model, which may improve usability in some re- from HTML forms and generate output as HTML pages. spects. Since HTML is textual and capable of being parsed and manipulated, we have the opportunity to recover some of the interactive automation capabilities that were avail- able in the Unix shell, but missing in graphical inter- 1 Introduction faces. Consider the following web-browsing tasks that could be partially or totally automated: The transition from command-line interfaces to graph- ical interfaces carries with it a significant cost. In the • Download and print a group of links on a page; Unix shell, for example, programs accept plain text as input and generate plain text as output. This makes it • Compare airfares and schedules for several choices easy to write scripts that automate user interaction. An of departure and arrival dates; expert Unix user can create sophisticated programs on the spur of the moment, by hooking together simpler • Look up a colleague in the online university phone- programs with pipelines and command substitution. For book, obtain a home address, locate the address on example: a map, and get driving directions; kill ‘ps ax | grep xterm | awk ’{print $1;}’‘ • Given a list of books to read, search for each book in the local library catalog, and if the book is not on the shelves, buy it from an online bookstore; Appeared in Proceedings of USENIX 2000 Annual Technical Conference, San Diego, CA, June 2000, pp 171-182. Best • Make a smart alarm clock that announces the cur- student paper award. rent temperature from an online weather report, and the time until the next bus departs from an online button to correct mistakes, and then copying the com- schedule, while you dress in the morning. mand sequence out of the browsing history and saving it as a script. As a step towards automating these tasks and others, we The browser-shell concept has implications beyond web have extended a web browser in several ways: automation, two of which are considered in this paper: 1. Embedding a pattern language for matching text and HTML, and a suite of text-processing tools for 1. HTML interfaces for local programs. Currently, extracting and manipulating web page data. High- programs with HTML interfaces must be installed level pattern-matching and text manipulation are in a web server in order to handle form submis- essential to web automation, acting as a glue lan- sions. LAPIS can submit forms to local programs guage for connecting unrelated web services and by the Common Gateway Interface (CGI) [17], an programs. existing standard used by web servers. This opens 2. Embedding a scripting language and integrating a the possibility of running HTML applications en- command interpreter into the Location box. In ad- tirely locally. HTML offers benefits of both a dition to accepting a typed URL, the browser win- graphical user interface (GUI) and a command-line dow’s Location box can also accept a typed com- interface (CLI). An HTML interface can be as easy mand with arguments. A command may be a built- to learn and use as a GUI, yet still open to au- in command, a user-defined script, or an external tomation like a CLI. As a demonstration, we have program. The built-in scripting language includes wrapped an HTML interface around the Unix find commands for automatic web browsing, such as program. clicking on hyperlinks, filling out forms, and ex- tracting data from web pages. 2. Using the browser as a command shell, in place of the Unix shell or MS-DOS command prompt. The 3. Using the browser window to display command browser-shell can be used to invoke local programs, output and construct pipelines of commands. When but it behaves differently from a conventional type- a command is invoked, it takes its input from the script shell. Whereas a typescript shell interleaves current page in the browser window, and sends its commands with program output in the same win- output back to the browser window as a new page. dow, a browser-shell displays commands and pro- 4. Including executed commands in the browsing his- gram output in separate parts of the browser win- tory. Forward and Back navigate through command dow, and automatically redirects a program’s in- output pages as well as web pages. Part of the his- put from the current page. These differences make tory can be extracted and saved as a script for later some tasks easier, such as viewing program output execution. and constructing pipelines, but others harder, such as running legacy programs that use standard input to interact with the user. The tradeoffs are discussed We have implemented these extensions in a proto- in more detail in section 5. type web browser named LAPIS (Lightweight Archi- tecture for Processing Information Structure). The first extension, consisting of a pattern language and text- The remainder of this paper is organized as follows. Sec- processing tools, was described in a previous paper [14], tion 2 covers related work. Section 3 describes impor- which is summarized below. This paper focuses on the tant features of the LAPIS browser-shell, including the other three features, which integrate a command shell pattern language, the scripting language, and invocation into the web browser to create a browser-shell. of external programs. Section 4 describes our proto- The browser-shell addresses the problem of interactive type implementation of LAPIS and contrasts some im- web automation by allowing the user to apply patterns, plementation alternatives. Section 5 discusses some of script commands, and external programs directly to the the implications of integrating a command shell into a browser page. For one-shot tasks, commands can be in- web browser, in particular creating local programs with terleaved with manual browsing to perform the task as HTML interfaces and using the browser as an alternative quickly and directly as possible. For repeated tasks, the interface to the system command prompt. Section 6 re- user can interactively define a script by invoking a se- ports on the status of the LAPIS prototype, and Section 7 quence of commands on example data, using the Back concludes. 2 Related Work how the controls are mapped to command-line options. In that sense, it resembles an HTML interface, but is Several systems have addressed the problem of web au- more platform-dependent than HTML. tomation. One approach is macro recording, typified by Others have investigated wrapping HTML interfaces LiveAgent [11]. LiveAgent automates a task by record- around command-line programs on a web server, but not ing a sequence of browsing actions in Netscape through on the client. For example, Phanouriou and Abrams [19] a local HTTP proxy. Macro recording requires little described an HTML interface that presented status infor- learning on the part of the user, but recorded macros suf- mation about a web server (network, filesystem, mem- fer from limited expressiveness, often lacking variables, ory, kernel, etc.) obtained from Unix commands. conditionals, and iteration. The browser-shell is not the first alternative to the stan- Another approach is scripting, writing a program in dard typescript Unix shell. Another is Sam [21], a a scripting language such as Perl, Tcl, or Python. graphical text editor which integrates external program These scripting languages are fully expressive, Turing- execution in three ways: “< command” replaces the complete programming languages, but programs written current selection with the output of a command, “> in these languages must be developed, tested, and in- command” runs the command with the current selec- voked outside the web browser, making them difficult to tion as input, and “| command” redirects both input incorporate into a web user’s work flow.
Recommended publications
  • Oracle Solaris: the Carrier-Grade Operating System Technical Brief
    An Oracle White Paper February 2011 Oracle Solaris: The Carrier-Grade Operating System Oracle White Paper—Oracle Solaris: The Carrier-Grade OS Executive Summary.............................................................................1 ® Powering Communication—The Oracle Solaris Ecosystem..............3 Integrated and Optimized Stack ......................................................5 End-to-End Security ........................................................................5 Unparalleled Performance and Scalability.......................................6 Increased Reliability ........................................................................7 Unmatched Flexibility ......................................................................7 SCOPE Alliance ..............................................................................7 Security................................................................................................8 Security Hardening and Monitoring .................................................8 Process and User Rights Management...........................................9 Network Security and Encrypted Communications .......................10 Virtualization ......................................................................................13 Oracle VM Server for SPARC .......................................................13 Oracle Solaris Zones .....................................................................14 Virtualized Networking...................................................................15
    [Show full text]
  • UKUI: a Lightweight Desktop Environment Based on Pluggable
    2016 International Conference on Artificial Intelligence and Computer Science (AICS 2016) ISBN: 978-1-60595-411-0 UKUI: A Lightweight Desktop Environment Based on Pluggable Framework for Linux Distribution Jie YU1, Lu SI1,*, Jun MA1, Lei LUO1, Xiao-dong LIU1, Ya-ting KUANG2, Huan PENG2, Rui LI1, Jin-zhu KONG2 and Qing-bo WU1 1College of Computer, National University of Defense Technology, Changsha, China 2Tianjin KYLIN Information Technology Co., Ltd, Tianjin, China *[email protected] *Corresponding author Keywords: Desktop environment, Ubuntu, User interface. Abstract. Ubuntu is an operating system with Linux kernel based on Debian and distributed as free and open-source software. It uses Unity as its default desktop environment, which results in more difficulties of usage for Microsoft Windows users. In this paper, we present a lightweight desktop environment named UKUI based on UbuntuKylin, the official Chinese version of Ubuntu, for Linux distribution. It is designed as a pluggable framework and provides better user experience during human-computer interaction. In order to evaluate the performance of UKUI, a set of testing bench suits were performed on a personal computer. Overall, the results showed that UKUI has better performance compared with Unity. Introduction Linux is a freely available operating system (OS) originated by Linux Torvalds and further developed by thousands of others. Typically, Linux is packaged in a form known as a Linux distribution for both desktop and server use. Some of the most popular mainstream Linux distributions are Red Hat [1], Ubuntu [2], Arch [3], openSUSY [4], Gentoo [5], etc. There are several desktop environments available for nowadays modern Linux distributions, such as XFCE [6], GNOME [7], KDE [8] and LXDE [9].
    [Show full text]
  • Introduction to Unix
    Introduction to Unix Rob Funk <[email protected]> University Technology Services Workstation Support http://wks.uts.ohio-state.edu/ University Technology Services Course Objectives • basic background in Unix structure • knowledge of getting started • directory navigation and control • file maintenance and display commands • shells • Unix features • text processing University Technology Services Course Objectives Useful commands • working with files • system resources • printing • vi editor University Technology Services In the Introduction to UNIX document 3 • shell programming • Unix command summary tables • short Unix bibliography (also see web site) We will not, however, be covering these topics in the lecture. Numbers on slides indicate page number in book. University Technology Services History of Unix 7–8 1960s multics project (MIT, GE, AT&T) 1970s AT&T Bell Labs 1970s/80s UC Berkeley 1980s DOS imitated many Unix ideas Commercial Unix fragmentation GNU Project 1990s Linux now Unix is widespread and available from many sources, both free and commercial University Technology Services Unix Systems 7–8 SunOS/Solaris Sun Microsystems Digital Unix (Tru64) Digital/Compaq HP-UX Hewlett Packard Irix SGI UNICOS Cray NetBSD, FreeBSD UC Berkeley / the Net Linux Linus Torvalds / the Net University Technology Services Unix Philosophy • Multiuser / Multitasking • Toolbox approach • Flexibility / Freedom • Conciseness • Everything is a file • File system has places, processes have life • Designed by programmers for programmers University Technology Services
    [Show full text]
  • Shell Script & Advance Features of Shell Programming
    Kirti Kaushik et al, International Journal of Computer Science and Mobile Computing, Vol.4 Issue.4, April- 2015, pg. 458-462 Available Online at www.ijcsmc.com International Journal of Computer Science and Mobile Computing A Monthly Journal of Computer Science and Information Technology ISSN 2320–088X IJCSMC, Vol. 4, Issue. 4, April 2015, pg.458 – 462 RESEARCH ARTICLE Shell Script & Advance Features of Shell Programming Kirti Kaushik* Roll No.15903, CS, Department of Computer science, Dronacharya College of Engineering, Gurgaon-123506, India Email: [email protected] Jyoti Yadav Roll No. 15040, CS, Department of Applied Computer science, Dronacharya College of Engineering, Gurgaon-123506, India Email: [email protected] Kriti Bhatia Roll No. 15048, CS, Department of Applied Computer science, Dronacharya College of Engineering, Gurgaon-123506, India Email: [email protected] Abstract-- In this research paper, the idea of shell scripting and writing computer programs is examined and different parts of shell programming are likewise contemplated. A shell script is a PC system intended to be controlled by the UNIX shell which is a charge line translator. The different tongues of shell scripts are thought to be scripting dialects. Regular operations performed by shell scripts incorporate document control, program execution, and printing content. A shell script can give an advantageous variety ofa framework order where unique environment settings, charge alternatives, or post-transforming apply naturally, yet in a manner that permits the new script to still go about as a completely typical UNIX summon. The real ideas like Programming in the Borne and C-shell, in which it would be clarified that how shell programming could be possible in Borne and C-shell.
    [Show full text]
  • Use Perl Regular Expressions in SAS® Shuguang Zhang, WRDS, Philadelphia, PA
    NESUG 2007 Programming Beyond the Basics Use Perl Regular Expressions in SAS® Shuguang Zhang, WRDS, Philadelphia, PA ABSTRACT Regular Expression (Regexp) enhance search and replace operations on text. In SAS®, the INDEX, SCAN and SUBSTR functions along with concatenation (||) can be used for simple search and replace operations on static text. These functions lack flexibility and make searching dynamic text difficult, and involve more function calls. Regexp combines most, if not all, of these steps into one expression. This makes code less error prone, easier to maintain, clearer, and can improve performance. This paper will discuss three ways to use Perl Regular Expression in SAS: 1. Use SAS PRX functions; 2. Use Perl Regular Expression with filename statement through a PIPE such as ‘Filename fileref PIPE 'Perl programm'; 3. Use an X command such as ‘X Perl_program’; Three typical uses of regular expressions will also be discussed and example(s) will be presented for each: 1. Test for a pattern of characters within a string; 2. Replace text; 3. Extract a substring. INTRODUCTION Perl is short for “Practical Extraction and Report Language". Larry Wall Created Perl in mid-1980s when he was trying to produce some reports from a Usenet-Nes-like hierarchy of files. Perl tries to fill the gap between low-level programming and high-level programming and it is easy, nearly unlimited, and fast. A regular expression, often called a pattern in Perl, is a template that either matches or does not match a given string. That is, there are an infinite number of possible text strings.
    [Show full text]
  • A First Course to Openfoam
    Basic Shell Scripting Slides from Wei Feinstein HPC User Services LSU HPC & LON [email protected] September 2018 Outline • Introduction to Linux Shell • Shell Scripting Basics • Variables/Special Characters • Arithmetic Operations • Arrays • Beyond Basic Shell Scripting – Flow Control – Functions • Advanced Text Processing Commands (grep, sed, awk) Basic Shell Scripting 2 Linux System Architecture Basic Shell Scripting 3 Linux Shell What is a Shell ▪ An application running on top of the kernel and provides a command line interface to the system ▪ Process user’s commands, gather input from user and execute programs ▪ Types of shell with varied features o sh o csh o ksh o bash o tcsh Basic Shell Scripting 4 Shell Comparison Software sh csh ksh bash tcsh Programming language y y y y y Shell variables y y y y y Command alias n y y y y Command history n y y y y Filename autocompletion n y* y* y y Command line editing n n y* y y Job control n y y y y *: not by default http://www.cis.rit.edu/class/simg211/unixintro/Shell.html Basic Shell Scripting 5 What can you do with a shell? ▪ Check the current shell ▪ echo $SHELL ▪ List available shells on the system ▪ cat /etc/shells ▪ Change to another shell ▪ csh ▪ Date ▪ date ▪ wget: get online files ▪ wget https://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.gz ▪ Compile and run applications ▪ gcc hello.c –o hello ▪ ./hello ▪ What we need to learn today? o Automation of an entire script of commands! o Use the shell script to run jobs – Write job scripts Basic Shell Scripting 6 Shell Scripting ▪ Script: a program written for a software environment to automate execution of tasks ▪ A series of shell commands put together in a file ▪ When the script is executed, those commands will be executed one line at a time automatically ▪ Shell script is interpreted, not compiled.
    [Show full text]
  • Unix/Linux Command Reference
    Unix/Linux Command Reference .com File Commands System Info ls – directory listing date – show the current date and time ls -al – formatted listing with hidden files cal – show this month's calendar cd dir - change directory to dir uptime – show current uptime cd – change to home w – display who is online pwd – show current directory whoami – who you are logged in as mkdir dir – create a directory dir finger user – display information about user rm file – delete file uname -a – show kernel information rm -r dir – delete directory dir cat /proc/cpuinfo – cpu information rm -f file – force remove file cat /proc/meminfo – memory information rm -rf dir – force remove directory dir * man command – show the manual for command cp file1 file2 – copy file1 to file2 df – show disk usage cp -r dir1 dir2 – copy dir1 to dir2; create dir2 if it du – show directory space usage doesn't exist free – show memory and swap usage mv file1 file2 – rename or move file1 to file2 whereis app – show possible locations of app if file2 is an existing directory, moves file1 into which app – show which app will be run by default directory file2 ln -s file link – create symbolic link link to file Compression touch file – create or update file tar cf file.tar files – create a tar named cat > file – places standard input into file file.tar containing files more file – output the contents of file tar xf file.tar – extract the files from file.tar head file – output the first 10 lines of file tar czf file.tar.gz files – create a tar with tail file – output the last 10 lines
    [Show full text]
  • A Multiplatform Pseudo Terminal
    A Multi-Platform Pseudo Terminal API Project Report Submitted in Partial Fulfillment for the Masters' Degree in Computer Science By Qutaiba Mahmoud Supervised By Dr. Clinton Jeffery ABSTRACT This project is the construction of a pseudo-terminal API, which will provide a pseudo-terminal interface access to interactive programs. The API is aimed at developing an extension to the Unicon language to allow Unicon programs to easily utilize applications that require user interaction via a terminal. A pseudo-terminal is a pair of virtual devices that provide a bidirectional communication channel. This project was constructed to enable an enhancement to a collaborative virtual environment, because it will allow external tools such to be utilized within the same environment. In general the purpose of this API is to allow the UNICON runtime system to act as the user via the terminal which is provided by the API, the terminal is in turn connected to a client process such as a compiler, debugger, or an editor. It can also be viewed as a way for the UNICON environment to control and customize the input and output of external programs. Table of Contents: 1. Introduction 1.1 Pseudo Terminals 1.2 Other Terminals 1.3 Relation To Other Pseudo Terminal Applications. 2. Methodology 2.1 Pseudo Terminal API Function Description 3. Results 3.1 UNIX Implementation 3.2 Windows Implementation 4. Conclusion 5. Recommendations 6. References Acknowledgments I would like to thank my advisor, Dr. Clinton Jeffery, for his support, patience and understanding. Dr. Jeffery has always been prompt in delivering and sharing his knowledge and in providing his assistance.
    [Show full text]
  • Openvms Security
    OpenVMS Security Presented by Paul Williams PARSEC Group 999 18th Street, Suite 1725 Denver, CO 80202 www.parsec.com | 888-4-PARSEC To Download this Presentation, please visit: http://www.parsec.com/public/openvmssecurity.pdf To E-mail Paul [email protected] www.parsec.com | 888-4-PARSEC Outline • OpenVMS Security Design • Physical Security • Object Security • UIC/ACL Security • User Access • Break-in Detection • Network and Internet Considerations • Encrypted Network Communication • Kerberos • Secure Socket Layer (SSL) Goals • Discuss the important points and consideration of OpenVMS Security • Concentrate on the mechanics and mechanisms of OpenVMS features. • Show how OpenVMS is one of the most secure operating systems on the market. OpenVMS Security Design • Security was designed into OpenVMS since V1.0 • Many different levels of security in OpenVMS Physical Security Object Security User Management Network Security • Has never had a virus Physical Security • System • System Console • Storage devices and media System Disk Data and Database Volumes Backups • Network devices and media Physical Security: System • Increase system reliability through restricted access Prevent intentional tampering and outage Prevent outage due to accidents • Prevent Front Panel Access Halts Reset/initializations Power switch/source Power on action settings (VAX) switch Physical Security: Console • Can be a big security hole for OpenVMS Anyone with physical access to the console can break into OpenVMS buy getting into the SYSBOOT utility. Then OpenVMS can be broken into: Buy redirecting startup Buy changing system parameters Physical Security: Getting to SYSBOOT on the Integrity Console Example • On the Integrity shutdown to the EFI Boot Manager and select the EFI Shell and create a alias.
    [Show full text]
  • Lecture 1: Introduction to UNIX
    The Operating System Course Overview Getting Started Lecture 1: Introduction to UNIX CS2042 - UNIX Tools September 29, 2008 Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages Lecture Outline 1 The Operating System Description and History UNIX Flavors Advantages and Disadvantages 2 Course Overview Class Specifics 3 Getting Started Login Information Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages What is UNIX? One of the first widely-used operating systems Basis for many modern OSes Helped set the standard for multi-tasking, multi-user systems Strictly a teaching tool (in its original form) Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages A Brief History of UNIX Origins The first version of UNIX was created in 1969 by a group of guys working for AT&T's Bell Labs. It was one of the first big projects written in the emerging C language. It gained popularity throughout the '70s and '80s, although non-AT&T versions eventually took the lion's share of the market. Predates Microsoft's DOS by 12 years! Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages Lecture Outline 1 The Operating System Description and History UNIX Flavors Advantages and Disadvantages 2 Course Overview Class Specifics 3
    [Show full text]
  • Chapter 1 Introducing Python
    3 Chapter 1 Introducing Python 1.1: Introduction Python is a programming language that is both simple and powerful. For those who have struggled with learning programming languages in the past, this may come as a pleasant surprise. This chapter describes some of the main features of Python and its use as a programming language to write scripts for ArcGIS. The logic and struc- ture of this book and the accompanying exercises is described, followed by some examples of how Python is used. The final part of this chapter intro- duces Python editors that make it easier to write and organize your code. 1.2: Exploring the features of Python Python has a number of features that make it the programming language of choice for working with ArcGIS. Among them: It’s simple and easy to learn: Python is easy to learn compared with other highly structured programming languages like C++ or Visual Basic. The syntax is simple, which gives you more time to focus on solving problems than having to learn the language itself. It’s free and open source: Python is free and open source software ( FOSS ). You can freely distribute copies of the software, read the source code, make changes to it, and use pieces of it in new free programs. One of the reasons Python works so well is that it has been created, and is constantly being improved, by an active and dedicated user community. The FOSS nature of Python makes it possible for Esri to distribute Python with ArcGIS software. It’s cross platform: Python is supported on different platforms, includ- ing Windows, Mac, Linux, and many others.
    [Show full text]
  • What Is the Shell? • the Login Shell
    03 0672324903 Ch03 2/3/03 1:41 PM Page 41 3 IN THIS CHAPTER • The Kernel and the Utilities What Is the Shell? • The Login Shell • Typing Commands to the Shell In this chapter you’ll learn what the shell is and what it does. • The Shell’s Responsibilities The Kernel and the Utilities The Unix system is itself logically divided into two pieces: the kernel and the utilities (see Figure 3.1). Unix system Utilities kernel disks Memory FIGURE 3.1 The Unix system. The kernel is the heart of the Unix system and resides in the computer’s memory from the time the computer is turned on and booted until the time it is shut down. The utilities, on the other hand, reside on the computer’s disk and are only brought into memory as requested. Virtually every command you know under the Unix system is classified as a utility; therefore, the program resides on the disk and is brought into memory only when you request that the command be executed. So, for example, when you execute the date command, the Unix system loads the program called date from the computer’s disk into memory and initiates its execution. The shell, too, is a utility program. It is loaded into memory for execution whenever you log in to the system. 03 0672324903 Ch03 2/3/03 1:41 PM Page 42 42 CHAPTER 3 What Is the Shell? In fact, it’s worth learning the precise sequence of events that occurs when the first shell on a terminal or window starts up.
    [Show full text]