Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于;“本地”;linux中的工具链_Linux_Bash_Path - Fatal编程技术网

关于;“本地”;linux中的工具链

关于;“本地”;linux中的工具链,linux,bash,path,Linux,Bash,Path,长期潜伏者第一次海报 我到处都找过了,我相信很容易找到,但我无法准确地说出搜索结果 我在一本教科书上做一些编码练习,我所有的工作都在以下层次结构的目录中: r00t / \ tools code \ chapts 工具目录中有两个脚本,使我的生活更轻松。我想要的,也是我发布的原因,是能够在r00t/tools中调用脚本,无论我在哪里,只要我在r00t中。我知道我可以将它们添加

长期潜伏者第一次海报

我到处都找过了,我相信很容易找到,但我无法准确地说出搜索结果

我在一本教科书上做一些编码练习,我所有的工作都在以下层次结构的目录中:

        r00t
       /    \
  tools      code
                 \
                  chapts
工具目录中有两个脚本,使我的生活更轻松。我想要的,也是我发布的原因,是能够在r00t/tools中调用脚本,无论我在哪里,只要我在r00t中。我知道我可以将它们添加到全局路径中,但这似乎很懒惰,我不希望我的路径再膨胀(这是否合理?)

那么,我可以将脚本或程序以某种方式添加到目录中的“本地路径”中吗?

查看一下允许您在进入或离开目录时执行脚本的
ondir
()程序

有了它,您可以动态地更改path变量。然而,我必须承认,我从未使用过这个程序,也没有被告知它的发展状况

或者,您可以将
cd
命令替换为脚本检查
pwd
与您的r00t目录,并根据结果更新
$PATH
。当然,您的
cd
速度会减慢,但可能不会明显减慢

例如:

#!/bin/bash

#alternative cd

cd $*

#check for r00t directory
if [ "$( pwd | grep -o 'r00t')" == "r00t" ] ; then
  #check path variable:
  if [ "$(echo $PATH | grep -o 'r00t')" != "r00t" ] ; then
        export PATH=$PATH:/DIR/r00t/bin
  fi
else
  #remove r00t from PATH when not in r00t
  if [ "$(echo $PATH | grep -o 'r00t')" == "r00t" ] ; then
        export PATH=$( echo $PATH | sed 's~:/DIR/r00t/bin~~' )
  fi
fi
请注意,现在您必须导入
别名
,如下所示:

alias cd='. ./path/to/script/alternative_cd.sh'
由于导出的路径需要源代码才能用于当前shell(如果使用
bash alternative_cd.sh
,则只能获得脚本运行所在子shell的新路径)

我对它进行了测试,它似乎起了作用。玩得开心。

查看一下ondir()程序,该程序允许您在进入或离开目录时执行脚本

有了它,您可以动态地更改path变量。然而,我必须承认,我从未使用过这个程序,也没有被告知它的发展状况

或者,您可以将
cd
命令替换为脚本检查
pwd
与您的r00t目录,并根据结果更新
$PATH
。当然,您的
cd
速度会减慢,但可能不会明显减慢

例如:

#!/bin/bash

#alternative cd

cd $*

#check for r00t directory
if [ "$( pwd | grep -o 'r00t')" == "r00t" ] ; then
  #check path variable:
  if [ "$(echo $PATH | grep -o 'r00t')" != "r00t" ] ; then
        export PATH=$PATH:/DIR/r00t/bin
  fi
else
  #remove r00t from PATH when not in r00t
  if [ "$(echo $PATH | grep -o 'r00t')" == "r00t" ] ; then
        export PATH=$( echo $PATH | sed 's~:/DIR/r00t/bin~~' )
  fi
fi
请注意,现在您必须导入
别名
,如下所示:

alias cd='. ./path/to/script/alternative_cd.sh'
由于导出的路径需要源代码才能用于当前shell(如果使用
bash alternative_cd.sh
,则只能获得脚本运行所在子shell的新路径)


我对它进行了测试,它似乎起了作用。玩得开心。

通常的处理方法是在每个项目目录树的根目录中放置一个。在这种情况下,
r00t
。调用文件
r00trc
,或制定自己的命名约定

rc文件应包括对命令行提示符的识别更改,以便不断提醒您shell正在使用的环境,以及重新分配
路径
变量以满足项目的需要,以及您需要的任何其他项目特定环境变量、别名或颜色设置

在默认登录环境中,在将当前工作目录更改为
r00t
之前或之后或不更改当前工作目录的情况下运行“bash”,生成一个子shell,然后获取
r00trc
文件的源代码。这为您提供了一个带有项目环境的bashshell和一个识别提示。使用
exit
退出子shell并返回默认环境


避免在主目录或项目目录根目录以外的任何位置收集项目rc文件,以便在对项目进行压缩、存档或发送给同事时不会丢失这些文件。

处理此问题的通常方法是在每个项目目录树的根目录中放置一个。在这种情况下,
r00t
。调用文件
r00trc
,或制定自己的命名约定

rc文件应包括对命令行提示符的识别更改,以便不断提醒您shell正在使用的环境,以及重新分配
路径
变量以满足项目的需要,以及您需要的任何其他项目特定环境变量、别名或颜色设置

在默认登录环境中,在将当前工作目录更改为
r00t
之前或之后或不更改当前工作目录的情况下运行“bash”,生成一个子shell,然后获取
r00trc
文件的源代码。这为您提供了一个带有项目环境的bashshell和一个识别提示。使用
exit
退出子shell并返回默认环境


避免在主目录或项目目录根目录以外的任何位置收集项目rc文件,这样,当您对项目进行压缩、归档或发送给同事时,它们不会丢失。

据我所知,任何shell中都没有内置任何东西可以启用此功能。
git
通过向上搜索目录层次结构,查找
.git
目录,在某种程度上实现了这一点。您最好的选择可能只是将XTRA目录添加到您的路径中。:'(这正是我自己开始思考的。我想你的$PATH变量没有理由不能变得超级庞大,只是编辑起来很麻烦。不过,谢谢!据我所知,任何shell中都没有内置任何东西可以启用此功能。
git
通过搜索目录层次结构,查找来实现这一点e> .git目录。您最好的选择可能只是将Xtra目录添加到您的路径中。:”(这是我自己开始思考的。我想没有理由您的$PATH变量不能超大型,只是编辑起来很麻烦。不过,谢谢!