【问题标题】:Create a shell with a different PATH创建具有不同 PATH 的 shell
【发布时间】:2018-07-24 18:07:22
【问题描述】:

我想编写一个脚本,该脚本将创建一个新的 shell,该 shell 在实例化时具有不同的路径变量。也就是说,我不想每次启动新脚本时都运行配置脚本。我只是希望shell的初始化有一个新的PATH。我该怎么做?

就细节而言,我将运行几个需要使用默认包的修改版本的测试。我想在一个新的 shell 中运行这些测试,以避免更改默认的 PATH 变量。

谢谢!

【问题讨论】:

  • 您想为同一台机器还是不同机器创建一个新会话?
  • 同一台机器上的新会话。我的设想是这样的: $ ./new_shell (new_shell) $ ./tests
  • 创建一个脚本,该脚本调用另一个脚本并参数化新会话的路径。因此,当您调用它们时,新会话将使用新路径进行实例化。所以,想法是使用主包装脚本调用脚本。
  • 是的,这就是目标。但是,我不知道如何参数化路径。我知道如何在 BASH 脚本中使用参数,只是不知道如何使用这些参数设置新 shell 的 PATH。谢谢!

标签: bash shell environment-variables


【解决方案1】:

Script1.sh :

export var1="\user\windows"
export var2="\windows\put"

$var1/Script2.sh "\user\abc\def" "\win\user\class"

Script2.sh :

export path1=$1
export path2=$2

脚本 1 使用作为参数传递的参数调用脚本 2。使用

运行脚本 1

./Script1.sh

它在第一个会话中导出 script1 的变量,在新会话中,它运行 script2 并启动独立于第一个的其他环境变量。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    如果您在 Linux/Mac 上运行, 你可以这样使用它:

    path='something_new' run_command
    

    其中 run_command 是您的测试脚本。 运行:

    path='something_new' set | grep path 
    

    对于 Mac 或:

    path='something_new' env | grep path
    

    适用于 Linux

    确保它适合您。

    【讨论】:

    • 您的两个grep 示例有问题。 setenv 的选择不是操作系统之一。这两个命令做不同的事情。 env 是一个外部二进制文件,它将显示环境变量。当从像 /bin/sh or bash` 这样的 POSIX 样式的 shell 运行时,它会显示 exported 的内容。从tcsh 运行时,它将显示使用setenv 设置的内容。 set 命令在 tcsh 中的行为与在 POSIX 中的行为完全不同,您可以在 Mac、Linux、FreeBSD、AIX 等中运行任何您喜欢的 shell。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2012-07-16
    • 2013-10-18
    • 2011-08-24
    • 2021-11-28
    • 2021-12-15
    相关资源
    最近更新 更多