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