Bash 如何在Ubuntu上设置运行环境?

Bash 如何在Ubuntu上设置运行环境?,bash,ubuntu,environment-variables,Bash,Ubuntu,Environment Variables,我想自定义一个命令来设置运行环境,但这里有一些问题。例如,我可以运行: envsetup 它将运行以下脚本来帮助设置环境: cd /opt/dir/set_up | source environment 我尝试将以下代码添加到$HOME.bashrc文件中,但它不起作用(也许我应该将其添加到根目录中的.bashrc中?) 有人能告诉我这里可能出了什么问题吗 有几件事: cd命令更改目录,不向 标准输出(stdout)。因此,使用|将其输出管道化到另一个命令是没有意义的。如果要按顺序执行两

我想自定义一个命令来设置运行环境,但这里有一些问题。例如,我可以运行:

envsetup
它将运行以下脚本来帮助设置环境:

cd /opt/dir/set_up | source environment 
我尝试将以下代码添加到$HOME.bashrc文件中,但它不起作用(也许我应该将其添加到根目录中的.bashrc中?)

有人能告诉我这里可能出了什么问题吗

有几件事:

  • cd
    命令更改目录,不向 标准输出(
    stdout
    )。因此,使用
    |
    将其输出管道化到另一个命令是没有意义的。如果要按顺序执行两个命令,可以使用
    分隔
  • 定义
    别名时,您不能太慷慨
    有空格
那么,这里有一个选项来做我认为你想要做的事情:

alias envsetup='cd /opt/dir/set_up ; source environment'

根据评论中表达的其他愿望,如果您想返回原始目录,可以通过以下方式进行:

alias envsetup='(cd /opt/dir/set_up ; source environment)'
这将在子shell中运行命令,因此当前shell设置不变,包括当前工作目录

请注意,由于这是在子shell中运行的,如果
source
打算以持久的方式更改环境变量,那么这将不起作用。您也可以尝试以下方法:

alias envsetup='p=$(pwd) ; cd /opt/dir/set_up ; source environment ; cd $p'

这将在同一个shell中运行。您可以选择您想要的任何名称
p

谢谢。成功了!再跟进一次。当我运行
envsetup
时,我进入了
/opt/dir/set\u-up
,但我想在设置环境后留在当前目录中做更多的事情。关于我该怎么做,有什么建议吗?@我很高兴它做了你想要的!如果是这样的话,也许你可以接受这个答案。关于您的后续问题:当我运行envsSetup时,它将我带到/opt/dir/set_u2;up,但我想留在当前目录中。。。你在这里的意思有点不清楚。最初您希望它将您带到新目录,但现在您希望留在原地。你到底需要它做什么?它是否需要转到新目录,运行脚本,然后返回?请参阅我的编辑,假设我猜对了。:)更简单的方法是
source/opt/dir/set\u-up/environment
@stark我不知道OP的脚本做什么,也不知道它是否需要在工作目录中才能执行某些功能。因此,这个建议可能会也可能不会像预期的那样起作用。它比试图在子shell中更改环境变量更有效
alias envsetup='p=$(pwd) ; cd /opt/dir/set_up ; source environment ; cd $p'