diff --git a/Library/Homebrew/utils/shell.rb b/Library/Homebrew/utils/shell.rb index 6a903d4c88..1f5e3844f9 100644 --- a/Library/Homebrew/utils/shell.rb +++ b/Library/Homebrew/utils/shell.rb @@ -13,7 +13,7 @@ module Utils shell_name = File.basename(path) # handle possible version suffix like `zsh-5.2` shell_name.sub!(/-.*\z/m, "") - shell_name.to_sym if %w[bash csh fish ksh mksh sh tcsh zsh].include?(shell_name) + shell_name.to_sym if %w[bash csh fish ksh mksh rc sh tcsh zsh].include?(shell_name) end sig { params(default: String).returns(String) } @@ -42,6 +42,8 @@ module Utils # a single quote can be included in a single-quoted string via \' # and a literal \ can be included via \\ "set -gx #{key} \"#{sh_quote(value)}\"" + when :rc + "#{key}=(#{sh_quote(value)})" when :csh, :tcsh "setenv #{key} #{csh_quote(value)};" end @@ -54,6 +56,9 @@ module Utils when :bash bash_profile = "#{Dir.home}/.bash_profile" return bash_profile if File.exist? bash_profile + when :rc + rc_profile = "#{Dir.home}/.rcrc" + return rc_profile if File.exist? rc_profile when :zsh return "#{ENV["ZDOTDIR"]}/.zshrc" if ENV["ZDOTDIR"].present? end @@ -66,6 +71,8 @@ module Utils case preferred when :bash, :ksh, :sh, :zsh, nil "echo 'export #{variable}=#{sh_quote(value)}' >> #{profile}" + when :rc + "echo '#{variable}=(#{sh_quote(value)})' >> #{profile}" when :csh, :tcsh "echo 'setenv #{variable} #{csh_quote(value)}' >> #{profile}" when :fish @@ -78,6 +85,8 @@ module Utils case preferred when :bash, :ksh, :mksh, :sh, :zsh, nil "echo 'export PATH=\"#{sh_quote(path)}:$PATH\"' >> #{profile}" + when :rc + "echo 'path=(#{sh_quote(path)} $path)' >> #{profile}" when :csh, :tcsh "echo 'setenv PATH #{csh_quote(path)}:$PATH' >> #{profile}" when :fish @@ -91,6 +100,7 @@ module Utils fish: "~/.config/fish/config.fish", ksh: "~/.kshrc", mksh: "~/.kshrc", + rc: "~/.rcrc", sh: "~/.profile", tcsh: "~/.tcshrc", zsh: "~/.zshrc",