如何以不同的用户身份通过​​管道传输到 bash

spu*_*der 2 bash sudo software-installation ruby

我正在运行一个实验来解决一个更大的问题。对于实验,我需要以rvm没有shell的用户身份安装。

要安装 rvm,请使用以下命令

\curl -L https://get.rvm.io | bash

我将如何以不同的用户身份运行以下命令?

这就是我正在尝试做的,但它不起作用。

sudo -u foo -H \curl -L https://get.rvm.io | bash 
sudo -u foo -H which rvm  
sudo: rvm: command not found
Run Code Online (Sandbox Code Playgroud)

cas*_*cas 9

您需要以用户身份运行 shell,而不是命令curlwhich命令。

有几种方法可以做到这一点,包括:

sudo -u user bash -c 'curl -L https://get.rvm.io | bash'
Run Code Online (Sandbox Code Playgroud)

curl -L https://get.rvm.io | sudo -u user bash
Run Code Online (Sandbox Code Playgroud)

如果您想以交互方式执行此操作,您可以使用sudo's-s选项来覆盖它们没有有效外壳的事实。例如:

# sudo -u user -s /bin/bash
$ whoami
user
$ exit
Run Code Online (Sandbox Code Playgroud)