我使用的是CentOS 7。
我像这样编写了第一个 bash 脚本。
#!/bin/bash echo 'this is my first code'
我把它另存为你好世界
我在我的根主目录中创建了一个目录。
mkdir bin
然后我将脚本移至该
~/bin
目录。然后我这样做了:
export PATH=~/bin:"$PATH" source ~/bin
然后我尝试使用以下命令运行脚本。
hello_world
但我没有看到,this is my first code
但我得到了一个bash: /root/bin/hello_world: Permission denied
错误。
答案1
为了使脚本可以在不使用显式解释器执行的情况下执行(如 中所示bash ~/bin/hello_world
),脚本文件必须设置其“可执行位”。这是通过以下方式完成的chmod
(请参阅其手册):
chmod u+x ~/bin/hello_world
这为文件所有者设置了可执行位。
或者,
chmod +x ~/bin/hello_world
这根据您当前的umask
.假设您umask
是022
(常见的默认值),这将使其对所有用户都可执行。
您所做的步骤source
是无意义的,应该给您一条错误消息(您无法获取目录)。
如果您需要将新设置设置PATH
为“永久”,则将该export PATH
行添加到 shell 的启动文件中(~/.bashrc
如果您使用bash
交互式 shell)。
另外,避免在交互式 root 提示符下工作。使用非特权用户帐户进行测试和探索,并sudo
在需要执行管理任务的少数情况下使用该帐户。