2016-05-21 10 views
0

läuft bash test.sh funktioniert. Aber läuft ./test.sh funktioniert nicht. Warum ist das?Warum funktioniert bash test.sh, aber nicht ./test.sh?

$ PATH

Adams-MacBook-Pro:~ adamzerner$ echo $PATH 
/Users/adamzerner/.rvm/gems/ruby-2.3.0/bin:/Users/adamzerner/.rvm/gems/[email protected]/bin:/Users/adamzerner/.rvm/rubies/ruby-2.3.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/adamzerner/.rvm/bin 

test.sh

#!/bin/bash 
echo Test 

Console Ausgabe:

Adams-MacBook-Pro:~ adamzerner$ ls 
Applications Downloads Movies  Public 
Desktop  Dropbox  Music  code 
Documents Library  Pictures test.sh 
Adams-MacBook-Pro:~ adamzerner$ ./test.sh 
-bash: ./test.sh: Permission denied 
Adams-MacBook-Pro:~ adamzerner$ sudo !! 
sudo ./test.sh 
Password: 
sudo: ./test.sh: command not found 
Adams-MacBook-Pro:~ adamzerner$ bash test.sh 
Test 
Adams-MacBook-Pro:~ adamzerner$ 

Dateiberechtigungen:

Adams-MacBook-Pro:~ adamzerner$ stat test.sh 
16777220 1752325 -rw-r--r-- 1 adamzerner staff 0 22 "May 20 20:23:07 2016" "May 20 20:04:40 2016" "May 20 20:04:40 2016" "May 20 20:03:40 2016" 4096 8 0 test.sh 
+0

Hat 'test.sh' Ausführungsberechtigungen? Bearbeiten Sie Ihren Beitrag, um die Ausgabe von 'stat test.sh' zu enthalten – muru

+0

@muru Ich weiß es nicht. a) Wie kann ich das herausfinden? b) Warum würde das dazu führen, dass 'bash' funktioniert, aber' ./ 'funktioniert nicht? c) Würde das Problem nicht "sudo" behoben? –

+1

a) 'stat test.sh' sucht nach etwas wie' rwxr-xr-x', insbesondere das 'x'. b) 'bash' hat Ausführungsberechtigungen, und Sie führen' bash' dort, nicht das Skript direkt, c) nein. – muru

Antwort

2

Geben Sie die Erlaubnis Skript ausführen:

chmod +x test.sh 

eine Datei Ausführen als ein Programm Erlaubnis erfordert auszuführen. Wenn Sie bash test.sh verwenden, wird es nicht als Programm ausgeführt, es ist nur eine Eingabedatei für das Programm bash, und das Programm muss es nur lesen können (genau wie cat test.sh muss nur in der Lage sein, es zu lesen).

Verwandte Themen