Я пытаюсь следовать этому примеру в Руководстве по Bash по здесь , где можно запускать сценарий только по его имени вместо имя сценария bash
. Сначала я использовал эти три команды, чтобы создать каталог 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
Необходимо будет изменить полномочия. Заметьте -rw-rw-r--
строка в строке приблизительно mybashscript~
. Эти символы показывают уровень полномочий для файла. Прямо сейчас у Вас есть он так, чтобы ничто не могло выполнить файл, только считайте или запишите это.
легкая фиксация chmod 775 ./mybashscript
. Это изменит те символы на -rwxrwxr-x
. Добавленное x
средний, что любой может также выполнить код и позволит Вам выполнять свой код.
, Если Вы обеспокоены, что любой может выполнить Ваш код, который является хорошей вещью, если Вы - безопасность, возражал против человека или на общем компьютере и т.д. Необходимо посмотреть эта веб-страница , который говорит о том, что означают различные полномочия файла. После того как у Вас есть достойное понимание того, как полномочия работают, можно отредактировать их так, чтобы только определенные пользователи могли читать, запишите или петляйте.
У Вас, кажется, нет исполняемого разрешения для того сценария,
-rw-rw-r-- 1 fieldsofgold fieldsofgold 0 Aug 11 15:10 mybashscript
, тип
sudo chmod a+x mybashscript
затем выполняет его с
./mybashscript
, Это будет работать
sed
– Zanna 4 November 2016 в 02:55