我从我的MacBook Pro打开“终端”,并尝试从书“猛砸指南入门”运行一些bash脚本:如何在macbook pro上运行bash脚本?
首先我检查PATH环境设置和当前工作文件夹,其中包含一个脚本“SCRIPT1 .SH“:
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ pwd
/Users/liuren/Documents/myscript
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ ls
script1.sh
然后我设置的路径,包括当前工作文件夹,它似乎成功了:
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ export PATH="$PATH:/Users/liuren/Documents/myscript"
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/liuren/Documents/myscript
,但是我不能让 ”script1.sh“ 运行:
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ script1.sh
#: bad interpreter: No such file or directoryt1.sh: /bin/bash
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ ./script1.sh
#: bad interpreter: No such file or directory
剧本其实很简单,从 “猛砸指南入门”:
#!/bin/bash
# This script clears the terminal, displays a greeting and gives information
# about currently connected users. The two example variables are set and displayed.
clear # clear terminal window
echo "The script starts now."
echo "Hi, $USER!" # dollar sign is used to get content of variable
echo
echo "I will now fetch you a list of connected users:"
echo
w # show who is logged on and
echo # what they are doing
echo "I'm setting two variables now."
COLOUR="black"
VALUE="9"
echo "This is a string: $COLOUR"
echo "And this is a number: $VALUE"
echo
echo "I'm giving you back your prompt now."
echo
,居然有 “/斌/庆典”:
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ cd /bin
unknown_b8-8d-1b-3d-0b-3d:bin liuren$ ls
[ df launchctl pwd tcsh
bash domainname link rcp test
cat echo ln rm unlink
chmod ed ls rmdir wait4path
cp expr mkdir sh zsh
csh hostname mv sleep
date kill pax stty
dd ksh ps sync
unknown_b8-8d-1b-3d-0b-3d:bin liuren$
使用其他方法运行它,它显示没有结果
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ source script1.sh
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ bash script1.sh
unknown_b8-8d-1b-3d-0b-3d:myscript liuren$ bash -x script1.sh
我想这是行不通的。我该如何解决这个问题?
ps。这个“unknown_b8-8d-1b-3d-0b-3d”是什么,是否有可能将它改为更有意义的东西?
看起来你可能在shebang行有一个奇怪的控制字符。当你运行时你会得到什么:sed 1q script1.sh | xxd – 2012-02-04 05:44:16
这可能与实际答案无关,但不应在PATH变量中加引号。你应该像这样设置它:export PATH = $ PATH:/ Users/liuren/Documents/myscript – 2012-02-04 05:47:19
它没有引用它的作品,但似乎用引号它也可以使它? – athos 2012-02-04 06:08:48