> What do you do when you have to use a computer without your customization?
As someone who has used an increasingly customized *nix command-line environment for decades, I'll say that this corner-case occupies a vanishingly small amount of my time. I just doesn't make sense to optimize for it. I currently use zsh, which is frequently not available by default. This implies installing a package, and I don't see how that's any worse for fish. I freely admit that my workflow as a developer vs. (e.g.) a sysadmin provides a greater degree of relative control over my day-to-day working environments.
I do have to work in non-customized environments from time to time. I find this no worse than using Someone Else's Keyboard -- maybe there's some clumsiness at first, but you soon get the hang of it. If you switch environments frequently, the switch becomes unnoticeable.
That said, I've also put continual effort into portability and ease of deployment of my customizations over the years. I can run one command on a networked host and have my rcfiles land there and be ready to use. This is pretty easy to do with a git-managed homedir repo, especially on a provider like GitHub where you can fall back to grabbing tarball if needed. I currently use vcsh[1] & mr[2] to manage my repos -- for that I use a bootstrap script hosted in an orphan branch of the same repo.[2] An efficient setup process of this type also makes it easy to integrate with provisioning tools, e.g. Puppet, Chef, or even just shell scripts.
As someone who has used an increasingly customized *nix command-line environment for decades, I'll say that this corner-case occupies a vanishingly small amount of my time. I just doesn't make sense to optimize for it. I currently use zsh, which is frequently not available by default. This implies installing a package, and I don't see how that's any worse for fish. I freely admit that my workflow as a developer vs. (e.g.) a sysadmin provides a greater degree of relative control over my day-to-day working environments.
I do have to work in non-customized environments from time to time. I find this no worse than using Someone Else's Keyboard -- maybe there's some clumsiness at first, but you soon get the hang of it. If you switch environments frequently, the switch becomes unnoticeable.
That said, I've also put continual effort into portability and ease of deployment of my customizations over the years. I can run one command on a networked host and have my rcfiles land there and be ready to use. This is pretty easy to do with a git-managed homedir repo, especially on a provider like GitHub where you can fall back to grabbing tarball if needed. I currently use vcsh[1] & mr[2] to manage my repos -- for that I use a bootstrap script hosted in an orphan branch of the same repo.[2] An efficient setup process of this type also makes it easy to integrate with provisioning tools, e.g. Puppet, Chef, or even just shell scripts.
[1] https://github.com/RichiH/vcsh
[2] http://myrepos.branchable.com/
[3] https://github.com/jwhitley/vcsh-root/tree/bootstrap