【问题标题】:How to set up a running environment on Ubuntu?如何在 Ubuntu 上搭建运行环境?
【发布时间】:2020-09-21 03:27:35
【问题描述】:

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

envsetup

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

cd /opt/dir/set_up | source environment 

我尝试将以下代码添加到我的 $HOME .bashrc 文件中,但它不起作用(也许我应该将它添加到我的根目录中的 .bashrc 中?):

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

谁能告诉我这里可能出了什么问题?

【问题讨论】:

    标签: bash ubuntu environment-variables


    【解决方案1】:

    有几点:

    • cd 命令更改目录并且不输出任何内容到 标准输出 (stdout)。因此,使用| 将其输出传送到另一个命令是没有意义的。如果要依次执行两条命令,可以用;分隔。
    • 在定义alias 时,你不能太慷慨 带空格。

    那么,这里有一个选项,可以做我认为你想做的事:

    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_up,但我想在设置环境后留在我当前的目录中做更多的事情。有什么关于我该怎么做的建议吗?
    • @ImTrying 太棒了,很高兴它做到了你想要的!如果是这样的话,也许你可以接受答案。关于你的后续问题:当我运行 envsetup 时,它把我带到了 /opt/dir/set_up 但我想留在我当前的目录中......有点不清楚是什么你是说这里。您最初希望它带您到新目录,但现在您希望留在原处。你到底需要它做什么?是否需要进入新目录,运行脚本,然后返回?假设我猜对了,请查看我的编辑。 :)
    • 更简单的是source /opt/dir/set_up/environment
    • @stark 我不知道 OP 的脚本做了什么以及它是否需要在该工作目录中才能执行某些功能。因此,该建议可能会或可能不会按预期工作。
    • 它会比尝试在子shell中更改环境变量更好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多