sc_*_*ray 2 linux shell alias path environment-variables
我的机器上有一个旧版本的程序.该程序最近进行了版本升级.我以前运行旧程序的方式是键入"runProgram".我的程序的脚本路径在我的PATH变量中指定为
PATH = ....:/path/to/my/old/programs/bin
Run Code Online (Sandbox Code Playgroud)
我想在我的旧程序旁边运行同一个程序的新版本,我想这样做的方法是修改我的PATH变量,如下所示:
PATH = ....:/path/to/my/old/programs/bin:/path/to/my/new/programs/bin
Run Code Online (Sandbox Code Playgroud)
我想要实现的是一些别名这两个路径的方法,这样当我输入'runVersion1'时,执行以前的版本,当我输入'runVersion2'时,新版本被执行了吗?
有没有办法实现这一目标?
谢谢
如果程序本身从bin目录运行其他程序,那么当您运行版本1程序时,您希望确保版本1目录位于版本2目录之前的PATH上,反之亦然,当您运行版本2时程序.这是我一直处理的事情,我通过确保适当设置PATH来处理它.
在我的$ HOME/bin中,我会放置两个脚本:
export PATH=/path/to/my/old/programs/bin:$PATH
# Set other environment variables as needed
exec runProgram "$@"
Run Code Online (Sandbox Code Playgroud)
export PATH=/path/to/my/new/programs/bin:$PATH
# Set other environment variables as needed
exec runProgram "$@"
Run Code Online (Sandbox Code Playgroud)
这种在其他程序之前将shell脚本放在我的PATH上的技术允许我选择我运行的程序.
通常,我将使用单个程序来设置环境,然后将其链接到我想要处理的各种程序名称.然后它查看$0
并运行:
export PATH=/path/to/my/new/programs/bin:$PATH
# Set other environment variables as needed
exec $(basename $0 2) "$@"
Run Code Online (Sandbox Code Playgroud)
如果链接了此脚本RunProgram2
,则basename
命令会从结尾处删除2 RunProgram2
,然后RunProgram
从更新的目录执行.
我也使用这种通用技术在一台机器上访问32位和64位版本的软件.我处理的程序往往比只有$ PATH的设置有更复杂的环境,因此脚本更大.
$ HOME/bin中的脚本与别名之类的主要优点之一是,使用哪个shell并不重要; 它的工作方式相同.另外,我没有太多的地方可以找到定义别名的位置(因为它没有定义).
归档时间: |
|
查看次数: |
2177 次 |
最近记录: |