2015-08-28 96 views
1

我已经将我的脚本导出到PATH变量。所以从任何地方,我都可以调用我的脚本,但是我必须知道从哪个路径调用脚本。如何找到命令调用路径

脚本存在于路径/home/raja/scps/shell/s1.sh

export PATH=$PATH:/home/raja/scps/shell/s1.sh. 

如下,我将运行脚本

1例

[email protected]:/home/raja#s1.sh 

我想知道的路径: /home/raja

第二个示例

[email protected]:/home/pmt/tmp/p1/p2#s1.sh 

我想知道的路径:/home/pmt/tmp/p1/p2

+0

如下 根@拉贾-H97-D3H在最后两行小变化:/home/raja/tmp/p1/p2#s1.sh 我想知道路径:/ home/raja/tmp/p1/p2 –

+2

这是一个无效的近距离投票,因为我看到它。 –

+2

您是否试图将脚本目录的路径添加到'PATH'?你是否想从脚本中知道脚本所在的目录?你是否想从脚本中知道用户所在的目录? – Sorpigal

回答

3

从那里被调用的脚本是在脚本里面PWD环境变量可用的当前工作目录。

考虑这个例子脚本:

#!/bin/bash 

echo $PWD 

将它添加到您的路径,并从任何目录调用它。 $PWD会有你想要的。

此:

[email protected]:/home/raja# s1.sh 

将输出/home/raja

此:

[email protected]:/home/pmt/tmp/p1/p2# s1.sh 

将输出/home/pmt/tmp/p1/p2

此外,您还需要将目录与脚本一起添加到$PATH;而不是脚本文件本身。你应该这样做,而不是:

export PATH=$PATH:/home/raja/scps/shell 
+0

我想你并没有明确表示我的问题,我知道pwd会给出当前的工作目录。我可以从任何地方运行脚本,因为我已经将脚本导出到PATH变量。如果我从调用脚本中的任何地方运行,我必须调用路径 –

+1

@PMTRAJA,我的答案与您展示的示例一致。我不确定我是否遵守,你能否澄清? –

+0

他想要的是创建脚本一次,并在任何目录中运行它。我不知道如何,但它似乎是一个坏主意。如果你有两个s1.sh,一个被设置为在任何目录中运行,另一个在你的工作目录中呢?你想要shell运行什么? –