dc.contributor.author | Li, Zheyang | |
dc.date.accessioned | 2021-05-27 19:00:42 (GMT) | |
dc.date.available | 2021-05-27 19:00:42 (GMT) | |
dc.date.issued | 2021-05-27 | |
dc.date.submitted | 2021-05-20 | |
dc.identifier.uri | http://hdl.handle.net/10012/17036 | |
dc.description.abstract | The Bourne-again shell (Bash) is a prevalent scripting
language for orchestrating shell commands and managing
resources in Unix-like environments. At the time of
writing, it is one of the mainstream shell dialects that is
available on most GNU Linux systems. However, the unique
syntax and semantic of shell languages could easily lead to
unintended behaviors if carelessly used. Prior studies
primarily focused on replacing Bash with different
languages and there is not much empirical evidence studying
the usage of the Bash itself in practice.
In this study, we perform a wide-ranging empirical study of
Bash usage, based on an analysis over one million
open-source Bash scripts found in Github repositories. We
identify and discuss which features and utilities of Bash
are most often used. Using static analysis, we find that
Bash scripts are often error prone, and the error-proneness
has a moderately positive correlation with the size of the
script. We also find that the most common problem areas
concern quoting, resource management, command options,
permissions, and error handling. We envision that the
findings of this study can be beneficial for learning Bash
and future studies that aim to improve shell and
command-line productivity and reliability. In addition, we
provide a large dataset of Bash script source code,
parse trees and code smell reports of each collected
Bash script to facilitate future research in Bash language. | en |
dc.language.iso | en | en |
dc.publisher | University of Waterloo | en |
dc.relation.uri | http://bit.ly/37PLx3n | en |
dc.subject | software engineering | en |
dc.subject | empirical study | en |
dc.title | An Empirical Study on Bash Language Usage in Github | en |
dc.type | Master Thesis | en |
dc.pending | false | |
uws-etd.degree.department | David R. Cheriton School of Computer Science | en |
uws-etd.degree.discipline | Computer Science | en |
uws-etd.degree.grantor | University of Waterloo | en |
uws-etd.degree | Master of Mathematics | en |
uws-etd.embargo.terms | 0 | en |
uws.contributor.advisor | Sun, Chengnian | |
uws.contributor.affiliation1 | Faculty of Mathematics | en |
uws.published.city | Waterloo | en |
uws.published.country | Canada | en |
uws.published.province | Ontario | en |
uws.typeOfResource | Text | en |
uws.peerReviewStatus | Unreviewed | en |
uws.scholarLevel | Graduate | en |