Master’s Thesis Presentation • Software Engineering — An Empirical Study on Bash Language Usage in GithubExport this event to calendar

Thursday, May 20, 2021 3:00 PM EDT

Please note: This master’s thesis presentation will be given online.

Zheyang Li, Master’s candidate
David R. Cheriton School of Computer Science

Supervisor: Professor Chengnian Sun

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 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.


To join this master’s thesis presentation on Zoom, please go to https://us02web.zoom.us/j/81546944385?pwd=M0lqQ0lIc3cwOW1WNnZ5YjBFNXE4Zz09.

Location 
Online presentation
200 University Avenue West

Waterloo, ON N2L 3G1
Canada
Event tags 

S M T W T F S
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
  1. 2024 (98)
    1. April (21)
    2. March (27)
    3. February (25)
    4. January (25)
  2. 2023 (296)
    1. December (20)
    2. November (28)
    3. October (15)
    4. September (25)
    5. August (30)
    6. July (30)
    7. June (22)
    8. May (23)
    9. April (32)
    10. March (31)
    11. February (18)
    12. January (22)
  3. 2022 (245)
  4. 2021 (210)
  5. 2020 (217)
  6. 2019 (255)
  7. 2018 (217)
  8. 2017 (36)
  9. 2016 (21)
  10. 2015 (36)
  11. 2014 (33)
  12. 2013 (23)
  13. 2012 (4)
  14. 2011 (1)
  15. 2010 (1)
  16. 2009 (1)
  17. 2008 (1)