This is a setup that will allow easy/easier management of you (zsh and bash) configuration.
If you're happy to run the installation script directly as your normal (non-root) user:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/chiselwright/shellrcd/master/tools/install.sh)" or
sh -c "$(wget -qO- https://raw.githubusercontent.com/chiselwright/shellrcd/master/tools/install.sh)" If you prefer to download, examine, and run the script yourself:
curl -fsSL -o ~/install-shellrcd.sh \ https://raw.githubusercontent.com/chiselwright/shellrcd/master/tools/install.sh $EDITOR ~/install-shellrcd.sh sh -c ~/install-shellrcd.sh There will come a point where you're wanting to replicate, or re-install work you've already made to your own configuration.
You can set these value in your shell before running tools/install.sh (as above) to have the script checkout your branch for you:
export SHELLRCD_EXTRA_BRANCH=extras/firstlast export SHELLRCD_EXTRA_REPO=git@github.com:USERNAME/shellrcd-extras-firstlast.git monster-mash:~ testuser$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/chiselwright/shellrcd/master/tools/install.sh)" [zsh] Looking for an existing zsh config... [zsh] Creating /Users/testuser/.zshrc and adding shellrcd block... [bash] Looking for an existing bash config... [bash] MacOS detected. Using .bash_profile. [bash] Creating /Users/testuser/.bash_profile and adding shellrcd block... [shellrcd] /Users/testuser/.shellrc.d is not found. Downloading... [shellrcd] ...done _ _ _ _ ( ) (_ ) (_ ) ( ) ___ | |__ __ | | | | _ __ ___ _| | /',__)| _ `\ /'__`\ | | | | ( '__)/'___) /'_` | \__, \| | | |( ___/ | | | | | | ( (___ ( (_| | (____/(_) (_)`\____)(___)(___)(_) `\____)`\__,_) ....is now installed! Please look over /Users/testuser/.bash_profile for any glaring errors. Check which scripts are active with: sh /Users/testuser/.shellrc.d/tools/list-active.sh Once happy, open a new shell or: source /Users/testuser/.bash_profile monster-mash:~ testuser$ The project aims to keep master as simple-yet-functional as possible, including a few generic scripts.
With that in mind, the project won't be filling up master with tens of scripts, overloading the startup with a mountain of behaviour that most people won't want.
However, most users will want to keep up to date with any core improvements, so should probably not fork the repo and detach from this original.
The project uses an origin named shellrcd to avoid potential confusion with any desire to use origin for managing your additions.
Make sure you set a suitable origin:
git remote add origin git@github.com:USERNAME/shellrcd-extras-firstlast.git git remote update origin git checkout -b extras/firstlast shellrcd/masterVerify that it can be updated (yes, with no changes)
shellrcd-update Set a suitable remote for this branch, by pushing with -u set:
git push -u origin extras/firstlast You probably don't want an unmodified copy of the master branch:
echo 'alias just-a-test="echo Just A Test"' > ~/.shellrc.d/_agnostic/alias.test chmod 0755 ~/.shellrc.d/_agnostic/alias.test cd ~/.shellrc.d/ git add _agnostic/alias.test git commit -m 'Add _agnostic/alias.test' git add
Then test an 'update':
shellrcd-update Because you will be rebasing you work on top of another branch you should use the following to push your changes to your repository:
git push --force-with-lease In gitlab, we created an empty repository:
We add this as a remote in ~/.shellrc.d:
cd ~/.shellrc.d git remote add origin git@github.com:chiselwright/shellrcd-extras-chizcw.git Create our new branch, and push it:
git checkout -b extras/chizcw shellrcd/master git push -u origin extras/chizcw You really do not want sensitive data added to a public repository!
shellrcd will process the contents of _PRIVATE if it exists.
There are two approaches we can suggest to manage files here
You run the risk of losing the files, but for some this solution might be more than enough
cd ~/.shellrc.d mkdir _PRIVATE echo "/_PRIVATE" >> .gitignore git commit -v "Ignore contents of _PRIVATE/" This allows you to version manage the contents of _PRIVATE without having to expose the details publicly.
cd ~/.shellrc.d git submodule add git@github.com:USERNAME/shellrcd-private-USERNAME.git _PRIVATE git commit -m "Add _PRIVATE/ as submodule" .gitmodules _PRIVATE git push --force-with-lease