Shell Scripting
From Ash, Bash and Csh to Xonsh, Ysh and Zsh; all shell languages are welcome here!
Rules:
- Follow Lemmy rules!
- Posts must relate to shell scripting. (See bottom of sidebar for more information.)
- Only make helpful replies to questions. This is not the place for low effort joke answers.
- No discussion about piracy or hacking.
- If you find a solution to your problem by other means, please take your time to write down the steps you used to solve your problem in the original post. You can potentially help others having the same problem!
- These rules will change as the community grows.
Keep posts about shell scripting! Here are some guidelines to help:
- Allowed: Release Announcement of a command-line program designed for scripted use (e.g. bash, bats, awk, jq, coreutils/moreutils)
- Allowed: Tutorials on using shell languages or supplementary tools designed for scripted use
- Allowed: Code review/help requests for shell languages or supplementary tools designed for scripted use
- NOT Allowed: Announcement of a CLI or TUI program that is not designed for scripted use (Yes, your fancy Zsh plugin which pretty-prints the date and time using only builtins is very cool, but unless you actually want to discuss the code itself, please check out !commandline instead!)
- NOT Allowed: Domain-specific tutorials that do not involve shell scripting as a core component (e.g. docker-compose, ansible, nix). If you really love one of these, I'm sure there's a community out there ready to talk about them!
- NOT Allowed: Code review requests for non-shell programming languages and configuration languages (e.g. Python, Yaml)
In general, if your submission text is primarily shell code, then it is welcome here!
There are automation tools that are much better suited for that then pure shell. Kickstart for anaconda based installers, preseed for debian installer etc. Or configuration management tools.
All require installing something so why not use this script to automate the installation and execution of those tools?
Kickstart and preseed do not require installing anything. These are features of distro installers. Such configuration management tools as ansible also do nat require installing agent on a target machine (only python is needed, but it is usually installed by default).
Yeah but this script works on all distros and operating systems regardless of whether they have Kickstart. Also lots of OS's don't ship with Python, Void Linux for example.
This script won't work in any distro, you have to use a lot of distro specific commands in it. But if you write a script for a specific distro anyway, why not use a tool that distro provides? You'll be sure that it does everything correct way and you even won't need to run anything after installation completed. You can also save time and disk space by excluding packages you don't need but that would be installed by default. You can also automate disk partitioning and customize other installer settings saving even more time.
Speaking about configuration management tools, they can look a bit overkill, but they have at least one advantage of shell script - idempotency. They won't try to install already installed software, change configs that don't need to be changed etc.
What commands do I use that are distro specific?
Package managers.
I actually don't use them in the main script, I do specify you can add them to the script if you use them.