有人能告诉我以下语法是否正确吗?我将 PATH 变量添加到前面,然后启动 houdini
alias houdini_run='pathold=$PATH; PATH=/home/jim/yt-conda/bin:/home/jim/yt-conda/sbin; /opt/hfs16.5.595/bin/hindie-bin; PATH=$pathold'
问题是当我运行它时,houdini 确实启动了,但是我看到很多缺少的包错误,即使它们确实安装在上面的 PATH 中定义的 bin 目录中。
IE
sh: 1: grep: not found
sh: 1: awk: not found
sh: 1: ls: not found
答案1
如果您希望在$PATH
运行所需程序时仅包含特定路径,那么您可以这样做:
PATH=/path/to/bins /opt/my_program
就你的情况而言:
PATH=$HOME/yt-conda/bin:$HOME/yt-conda/sbin /opt/hfs16.5.595/bin/hindie-bin
设置别名如下:
alias myprg="PATH=$HOME/yt-conda/bin:$HOME/yt-conda/sbin /opt/hfs16.5.595/bin/hindie-bin"
现在,当您使用myprg
它时,它会设置$PATH
为您想要的路径,然后运行您的程序,并且$PATH
在您使用完程序后保持环境不变。
答案2
PATH
被 shell 用来查找要执行的程序(grep
、awk
、ls
)。
通过设置,PATH=/home/jim/yt-conda/bin:/home/jim/yt-conda/sbin
您可以告诉 shell 仅查看那些目录。
设置你的PATH
别名是不明智的。你只需要做一次。输入类似
PATH=$PATH:/home/jim/yt-conda/bin:/home/jim/yt-conda/sbin
在你的~/.bashrc