如何在切换到脚本所在的目录时触发unix脚本的执行

如何在切换到脚本所在的目录时触发unix脚本的执行,unix,Unix,我想执行一个脚本,当用户遍历到某个目录时,为用户创建环境变量。如果您有一个实际的示例,说明您希望如何使用它,这会有所帮助,但基于您的标题和问题正文,这是如何开始的 cat specialVarSetter.bash #! /bin/bash targetDir=/path/to/special/dir cd $1 if [[ $PWD == "$targetDir" ]] ; then userVar1=xxxx userVar2=yyyy fi #your

我想执行一个脚本,当用户遍历到某个目录时,为用户创建环境变量。

如果您有一个实际的示例,说明您希望如何使用它,这会有所帮助,但基于您的标题和问题正文,这是如何开始的

 cat specialVarSetter.bash
 #! /bin/bash

 targetDir=/path/to/special/dir
 cd $1

 if [[ $PWD == "$targetDir" ]] ; then
    userVar1=xxxx
    userVar2=yyyy
 fi

 #your real stuff goes after this
 runProgram 1
 runProgram 2

 chmod 755 specialVarSetter.bash
 specialVarSetter.bash /path/to/special/dir
如果您只想让用户输入'dir',则可以添加类似于
baseDir=/path/to/special
的内容,并更改为
cd$baseDir/$1
。测试将执行,您将设置变量

此外,我认为csh/tcsh可能在本机上有这样一个特性,如果tcsh有它,那么zsh也会有它(而且无论如何都可能有)。这取决于您对用户环境的控制程度。(我想找一些名为CDPATH或相关的东西,zsh人,一点帮助?)


我希望这会有帮助。

如果你有一个真实的例子,说明你希望如何使用它,这会有所帮助,但根据你的标题和问题正文,这是如何开始的

 cat specialVarSetter.bash
 #! /bin/bash

 targetDir=/path/to/special/dir
 cd $1

 if [[ $PWD == "$targetDir" ]] ; then
    userVar1=xxxx
    userVar2=yyyy
 fi

 #your real stuff goes after this
 runProgram 1
 runProgram 2

 chmod 755 specialVarSetter.bash
 specialVarSetter.bash /path/to/special/dir
如果您只想让用户输入'dir',则可以添加类似于
baseDir=/path/to/special
的内容,并更改为
cd$baseDir/$1
。测试将执行,您将设置变量

此外,我认为csh/tcsh可能在本机上有这样一个特性,如果tcsh有它,那么zsh也会有它(而且无论如何都可能有)。这取决于您对用户环境的控制程度。(我想找一些名为CDPATH或相关的东西,zsh人,一点帮助?)

我希望这能有所帮助。

除了“cd”过载或修补外壳之外,你不能这么做。你能“过载”cd吗??它是内置的。您可以使用alias,但如何传递参数?除了重载“cd”或修补shell之外,您不能这样做。您可以“重载”cd吗??它是内置的。可以使用alias,但如何传递参数?