从任何地方启动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