我是 Bash 脚本的新手,为我的 VPN 编写了一个名为myvpn.sh
Instead of doing ./myvpn.sh
I want to just write myvpn
in terminal and it will run it from any directory. 尝试在 Google 上搜索,但没有找到(可能是 Google 错了)。
业余爱好者可以做到这一点吗?还是需要一些高级知识?
答案1
您可以创建alias
脚本的路径。首先,使用以下命令使您的命令可执行chmod
:
chmod u+x myvpn.sh
在哪里u+x
仅授予用户(您)执行脚本的权限。
alias
然后在你的中创建一个.bashrc
以使其持久:
alias myvpn='/path/to/your/script'
现在您只需myvpn
从任何地方键入即可执行脚本。
答案2
您好,欢迎来到 Ask Ubuntu。
您很幸运,您的问题根本不需要高级知识!
1)找到可执行文件所在的文件夹
要仅使用其名称执行,二进制文件必须位于 PATH 环境变量中的目录之一中。
Ubuntu 上用户可执行文件的默认目录是$HOME/bin
。如果不存在,您可以手动创建它,它将自动添加到您的 PATH 变量中。$HOME
是一个环境变量,它保存了用户主目录的路径,这意味着这个“bin”文件夹将与“Documents”、“Pictures”、“Music”...* 在同一文件夹中创建。
要了解 PATH 变量中的内容,最简单的方法是打开终端并输入echo $PATH
,如 vanadium 所建议的那样。您还可以使用 查看所有环境变量env
。
您应该获得类似的结果(如果您使用了的话还会得到其他变量env
):
PATH=/home/datam/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
文件夹之间以“:”符号分隔。
每次您在终端中输入命令时,您的操作系统都会查找这些目录,直到找到相应的可执行文件!
在这里您可以看到您的主目录中有一个文件夹,无需 sudo 即可访问:$HOME/.local/bin
如果您手动添加了 bin 文件夹,那么您会在路径中看到它(注销并重新登录后)。
您的文件就应该在那里!
2)使文件可执行
因此,请确保您的文件可由您的用户执行,即对“u”具有 x 权限(以图形方式右键单击 -> 属性 -> 权限,具体取决于您的发行版,在命令行中从文件所在的文件夹)。如果尚未完成,ls -l
请编辑脚本以在其第一行添加。#!/bin/bash
3)将文件移动到正确的文件夹中
现在,将文件移动或复制到$HOME/bin
工作完成了:)您现在只需输入文件名就可以从终端执行它!
4)重命名文件(可选)
如果您的脚本文件名为“myvpn.sh”,您将在终端中输入“myvpn.sh”来调用它。因此,如果您只想使用“myvpn”调用脚本,则必须重命名文件。
答案3
您可以将脚本移至/usr/local/bin
并使用 使其可执行chmod 0750 myvpn.sh
。这样您只需输入脚本名称即可运行它。为以防万一,请确保您的脚本以 开头#!/bin/bash
。
答案4
为了能够通过键入其名称来运行脚本,脚本应该驻留在搜索路径中列出的文件夹。该命令echo $PATH
将列出您当前的搜索路径。当您键入可执行文件的名称时,系统将搜索 PATH 变量中列出的文件夹,以查找具有您键入的名称的可执行文件。
如果您希望所有用户都可以使用您的脚本,则需要将其放在系统文件夹下的某个文件夹中。为此,您需要管理员权限。
如果您是唯一需要使用该脚本的用户,请在bin
您的主文件夹下创建一个文件夹(即也包含等的文件夹)。然后注销并重新登录。Ubuntu 配置为自动将您的本地文件夹包含在 PATH 中。此后Documents
,您将能够通过键入文件名来运行您放置在本地文件夹中的任何可执行文件。Pictures
bin
bin
一个细节:如果您想键入myvpn
以运行您的自定义脚本,那么您还需要像这样命名它:因此,重命名myvpn.sh
为myvpn
。另外不要忘记使脚本可执行。将脚本移动到本地bin
文件夹后,以下命令将使其可执行:
chmod +x ~/bin/myscript
您还可以使用文件(nautilus)使脚本可执行:右键单击脚本,选择“属性”,然后转到“权限”选项卡。