首页 > 解决方案 > 如何将 $(command) 回显到 bash 配置文件中

问题描述

我正在尝试附加eval "$(rbenv init -)"到我的 bash 个人资料

(我正在尝试遵循此说明)

# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

这是自动化过程的一部分,因此我无法访问 GUI 或无法使用编辑器。但是当我回显命令时 $(rbenv init -) 会被执行并附加一堆东西。如何将其作为纯文本回显?

这就是我现在所拥有的

ec2-user@ip-172-31-46-129 ~ % cat /tmp/install-rbenv.sh 
+-zsh:41> cat /tmp/install-rbenv.sh
#!/bin/bash
sudo -i -u buildkite-agent bash << EOF
echo "export RUBY_CONFIGURE_OPTS=\"--with-openssl-dir=$(brew --prefix openssl@1.1)\"" >> /Users/buildkite-agent/.bash_profile
echo 'eval "$(rbenv init -)"' >> /Users/buildkite-agent/.bash_profile
EOF
echo "Done"

运行它

ec2-user@ip-172-31-46-129 ~ % . /tmp/install-rbenv.sh 
+-zsh:42> . /tmp/install-rbenv.sh
+/tmp/install-rbenv.sh:6> brew --prefix openssl@1.1
+/tmp/install-rbenv.sh:6> rbenv init -
+/tmp/install-rbenv.sh:6> sudo -i -u buildkite-agent bash
+/tmp/install-rbenv.sh:10> echo Done
Done

检查 bash 配置文件

ec2-user@ip-172-31-46-129 ~ % sudo su - buildkite-agent 
+-zsh:43> sudo su - buildkite-agent
rbenv: no such command `sh-'
-bash: eval: line 31: syntax error near unexpected token `rehash'
-bash: eval: line 31: `  rehash|shell)'

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
ip-172-31-46-129:~ buildkite-agent$ cat ~/.bash_profile 
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/opt/openssl@1.1"
eval "export PATH="/Users/ec2-user/.rbenv/shims:${PATH}"
export RBENV_SHELL=zsh
source /usr/local/Cellar/rbenv/1.1.2/libexec/../completions/rbenv.zsh
command rbenv rehash 2>/dev/null
rbenv() {
  local command
  command="${1:-}"
  if [ "$#" -gt 0 ]; then
    shift
  fi

  case "$command" in
  rehash|shell)
    eval "$(rbenv "sh-$command" "$@")";;
  *)
    command rbenv "$command" "$@";;
  esac
}"

标签: bash

解决方案


显然你不想使用编辑器来编辑你的.bash_profile文件,否则你害怕你会被困在里面vi:-D

将要附加到文件的文本放在撇号中,它将逐字写入文件。shell 不会对括在撇号中的参数进行任何扩展。

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

就这样。


推荐阅读