在终端上添加简单的快捷方式,正确的方法

在终端上添加简单的快捷方式,正确的方法

我正在尝试将文件夹添加到 PATH 变量(仅针对特定用户)。

因此我在 ~/.bashrc 中添加了

export PATH=$PATH:/home/username/Tools/scripts/

在此文件夹中,我有一些脚本和一些其他程序的快捷方式(例如:firefox.sh)

当我打开新终端时,路径变量是正确的,但是当我尝试执行“ sh firefox”时,我收到“没有这样的文件”。

我希望能够为该用户从终端的任何文件夹执行任何 *.sh 脚本我做错了什么?

答案1

搜索路径中的脚本应该具有唯一的名称(与其他系统命令(包括 shell 内建命令)不同) 即避免使用诸如 之类的名称firefox, vlc, nano, echo, cd, test, sudo ... etc

搜索路径中的脚本由文件名运行(包括扩展名,例如.sh如果使用)而不指定 shell 解释器(这些是可执行文件,它们以带有完整路径或脚本命令字符串的脚本文件作为参数,但不是仅通过文件名调用的路径中的可执行文件/脚本文件),而是包括一个舍邦在其中即不是像这样:

sh scriptname

而是像这样:

scriptname

搜索路径中的脚本需要包含 shebang(脚本的第一行告诉应该使用什么解释器来运行脚本) 如下所示:

#!/bin/bash

或这个:

#!/bin/sh

或者甚至是这样的:

#!/bin/python3

等等。

首先需要使搜索路径中的脚本可执行,如下所示:

chmod +x /full/path/to/scriptname

这就是它们的工作方式。

答案2

bashsh是不同的 shell。我相信~/.bashrc不会被 读取。尝试将您的附加内容放入应该被所有 shell 读取的sh路径中。~/.profile

此外,您写道,您的脚本被调用firefox.sh,因此您还需要引用它sh firefox.sh- 但这可能仍然不起作用,因为搜索路径仅针对可执行文件进行评估,而在这种情况下,您尝试加载脚本sh而不是直接执行它。

尝试

sh `which firefox.sh`

firefox.sh首先解析路径。如果模式为“x”,则也会分叉( chmod +x firefox.sh

相关内容