从任何地方启动shell脚本
是否可以从任何地方运行位于~/scripts
?
假设我想运行./scriptname
而不管我当前的工作目录。
您可以在$PATH
环境变量中添加~/scripts
。 然后你可以从任何地方运行scriptname
(但不是./scriptname
,因为./
表示当前目录)。
这个答案显示了如何将~/bin
添加到$PATH
,但是你当然可以用~/scripts
做同样的事情。
加
export PATH=$PATH:~/scripts
到~/.bashrc
文件的末尾。 这将允许您通过在bash中键入scriptname来在~/scripts/
执行脚本。 您需要注销才能在会话中工作(您可以通过打开新终端来测试脚本)。
我经常加
export PATH=$PATH:~/bin
到我的路径,然后创建符号链接到脚本我想要在我的会话中可用的程序。
cd ~/bin ln -s ~/Tools/eclipse3.7/eclipse # which will create a symlink in ~/bin/ with the name eclipse # pointing to ~/Tools/eclipse3.7/eclipse which allows me to execute # the eclipse in ~/Tools/eclipse3.7/
请注意,路径文件具有优先权。 如果我已经通过ubuntu安装了eclipse,它将首先在除了~/bin/
之外的所有其他地方搜索eclipse。 如果要更改此行为,只需以相反的方式导出目录:
export PATH=~/bin:$PATH
确保脚本目录中的脚本是可执行的,否则导出将不起作用。
您可以通过键入来查看可用路径
echo $PATH
如果要查看所有环境变量,请在控制台中键入env
。
两种方式:
- 使用完整路径而不是
./
来调用shell脚本,例如~/scripts/scriptname
- 将包含shell脚本的文件夹添加到
$PATH
环境变量,并调用没有前导./
shell脚本,如scriptname