bash - 如何将 $(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_profile
文件,否则你害怕你会被困在里面vi
:-D
将要附加到文件的文本放在撇号中,它将逐字写入文件。shell 不会对括在撇号中的参数进行任何扩展。
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
就这样。
推荐阅读
- java - 如何在 ldap 中按对象 SID 搜索用户
- postscript - 将字符串作为 PostScript 指令执行
- php - WordPress 中的 PHP DOM - 在输出缓冲区 HTML 中添加属性
- clojure - clojure 的“doc”命令打印出来是什么?
- javascript - 按下提交按钮后,寻找我的 Javascript 加载程序以激活
- swift - 填充 CirleProgressView 并将结果保存到 UserDefaults
- python - 发表评论后如何重定向我的用户
- android - Android studio - 在服务上发送关键事件
- r - 生成要复合的值索引,但以可扩展的方式忽略初始值
- python - 具有 pt_BR 语言环境的 Alpine 上的 Python 仍以英语输出