Des*_*ume 4 command-line scripts
很多时候,我想要执行的脚本不在我当前的工作目录中,我真的不想离开它。
从另一个目录运行脚本(BASH、Perl 等)是一个好习惯吗?他们通常会找到正常运行所需的所有东西吗?
如果是这样,运行“远程”脚本的最佳方法是什么?是吗
. /path/to/script
Run Code Online (Sandbox Code Playgroud)
或者
sh /path/to/script
Run Code Online (Sandbox Code Playgroud)
以及sudo在这种情况下如何使用?例如,这不起作用:
sudo . /path/to/script
Run Code Online (Sandbox Code Playgroud)
您可以仅使用整个路径调用脚本,而无需使用点.:
/path/to/script
Run Code Online (Sandbox Code Playgroud)
sudo 也工作正常:
sudo /path/to/script
Run Code Online (Sandbox Code Playgroud)
他们通常会找到正常运行所需的所有东西吗?
您的意思是“我的脚本会找到位于同一文件夹中的文件吗?” 这取决于你的代码。例如,如果您有脚本/tmp/test.sh:
#!/bin/bash
ls
Run Code Online (Sandbox Code Playgroud)
如果您从您的主文件夹调用它,它将在您的主文件夹中运行ls:
test@ubuntu:~:/tmp/test.sh
Desktop Dropbox Imagens NetBeansProjects Público
Documentos Modelos R Vídeos
Run Code Online (Sandbox Code Playgroud)
在这种情况下,dirname您的盟友是:
#!/bin/bash
current=$(dirname $0)
ls $current
Run Code Online (Sandbox Code Playgroud)
从您的主文件夹运行它,它提供:
test@ubuntu:~:/tmp/test.sh
acroread_1000_1000 hiRF7yLSOD pulse-2L9K88eMlGn7
unity_support_test.0 clementine-art-jt5332.jpg
Run Code Online (Sandbox Code Playgroud)
这是我的/tmp/文件夹的内容。