我正在尝试按照 Bash Guide 中的这个示例进行操作这里在这里,只需通过脚本名称就可以运行它,而不是bash scriptname
。首先,我使用这三个命令创建一个 bin 目录,将其路径添加到 PATH,将其添加到 bash 配置文件,然后重新加载它:
$ mkdir -p "$HOME/bin"
$ echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
$ source "$HOME/.bashrc"
然后,我创建了一个简单的脚本,如下所示:
#!/usr/bin/env bash
echo "Hello World"
但是,当我尝试在终端中仅通过其名称运行它时,它会给出错误:
bash: /home/fieldsofgold/bin/mybashscript: Permission denied
有人能帮我解决这个问题吗?谢谢。
编辑:输出ls -l
:
fieldsofgold@fieldsofgold-VirtualBox:~$ ls -l
total 152
-rwxrwxr-x 1 fieldsofgold fieldsofgold 13469 Mar 28 17:17 a.out
drwxrwxr-x 2 fieldsofgold fieldsofgold 4096 Aug 12 06:23 bin
drwxr-xr-x 9 fieldsofgold fieldsofgold 4096 Aug 11 07:55 Desktop
drwxr-xr-x 2 fieldsofgold fieldsofgold 4096 Feb 13 19:15 Documents
drwxr-xr-x 3 fieldsofgold fieldsofgold 4096 Aug 11 10:49 Downloads
-rwxrwxr-x 1 fieldsofgold fieldsofgold 8509 Mar 19 12:10 ex1
-rw-rw-r-- 1 fieldsofgold fieldsofgold 1852 Mar 25 19:59 ex1.c
-rw-rw-r-- 1 fieldsofgold fieldsofgold 1827 Mar 25 12:56 ex1.c~
-rw-rw-r-- 1 fieldsofgold fieldsofgold 1773 Mar 25 12:43 ex2.c~
-rw-rw-r-- 1 fieldsofgold fieldsofgold 1834 Mar 25 12:36 ex3.c~
-rw-rw-r-- 1 fieldsofgold fieldsofgold 1786 Mar 25 12:44 ex4.c~
-rw-r--r-- 1 fieldsofgold fieldsofgold 8980 Feb 13 18:27 examples.desktop
-rwxr-xr-x 1 root root 33 Aug 9 19:32 helloworld.sh
drwxr-xr-x 2 fieldsofgold fieldsofgold 4096 Feb 13 19:15 Music
-rw-rw-r-- 1 fieldsofgold fieldsofgold 0 Aug 11 15:10 mybashscript~
drwxrwxr-x 4 fieldsofgold fieldsofgold 4096 Jul 29 20:30 nltk_data
drwxrwxr-x 8 fieldsofgold fieldsofgold 4096 Jul 28 19:48 numpy
-rw-rw-r-- 1 fieldsofgold fieldsofgold 1571 Mar 28 08:13 oddEvenTrans22.c
-rw-rw-r-- 1 fieldsofgold fieldsofgold 38 Mar 25 15:44 oddEvenTrans.c~
drwxr-xr-x 5 root root 4096 Jul 28 11:18 openblas
drwxrwxr-x 14 fieldsofgold fieldsofgold 4096 Jul 28 11:18 OpenBLAS
drwxr-xr-x 2 fieldsofgold fieldsofgold 4096 Mar 26 04:25 Pictures
-rw-rw-r-- 1 fieldsofgold fieldsofgold 0 Mar 25 19:16 practice.c
drwxr-xr-x 2 fieldsofgold fieldsofgold 4096 Feb 13 19:15 Public
drwxrwxr-x 2 fieldsofgold fieldsofgold 4096 Mar 30 09:12 python
drwxrwxr-x 2 fieldsofgold fieldsofgold 4096 Mar 29 18:05 scans
drwxr-xr-x 2 fieldsofgold fieldsofgold 4096 Feb 13 19:15 Templates
-rw-rw-r-- 1 fieldsofgold fieldsofgold 78 Mar 16 06:47 testfile
-rw-rw-r-- 1 fieldsofgold fieldsofgold 4606 Feb 15 04:16 Vagrantfile
drwxr-xr-x 2 fieldsofgold fieldsofgold 4096 Feb 13 19:15 Videos
-rw-rw-r-- 1 fieldsofgold fieldsofgold 29 Aug 9 16:50 vitestfile
-rw-rw-r-- 1 fieldsofgold fieldsofgold 591 Mar 28 08:10 wr
答案1
您需要更改权限。请注意-rw-rw-r--
行中的行mybashscript~
。这些字符显示文件的权限级别。现在您拥有它,因此没有任何东西可以执行该文件,只能读取或写入它。
一个简单的解决方法是chmod 775 ./mybashscript
。这会将这些字符更改为-rwxrwxr-x
。添加x
的 意味着任何人都可以执行该代码,并允许您运行您的代码。
如果你担心任何人都可以执行你的代码(如果你是一个有安全意识的人或者在共享计算机上,这是一件好事),你应该看看此网页讨论了不同文件权限的含义。一旦您对权限的工作方式有了充分的了解,您就可以编辑它们,以便只有某些用户可以读取、写入或运行该文件。
答案2
您似乎没有该脚本的可执行权限,
-rw-rw-r-- 1 fieldsofgold fieldsofgold 0 Aug 11 15:10 mybashscript
类型
sudo chmod a+x mybashscript
然后运行
./mybashscript
它会运行