bash: /root/bin/hello_world: 权限被拒绝

Dea*_*ang 3 bash permissions centos shell-script

我正在使用 CentOS 7。

  1. 我像这样写了我的第一个 bash 脚本。

    #!/bin/bash
    echo 'this is my first code'
    
    Run Code Online (Sandbox Code Playgroud)

    我把它保存为hello_world

  2. 我在我的根主目录中创建了一个目录。

    mkdir bin
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我将脚本移动到~/bin目录中。

  4. 然后我这样做了:

    export PATH=~/bin:"$PATH"
    source ~/bin
    
    Run Code Online (Sandbox Code Playgroud)
  5. 然后我尝试使用以下命令运行脚本。

    hello_world 
    
    Run Code Online (Sandbox Code Playgroud)

但我没有看到,this is my first code但我得到了一个bash: /root/bin/hello_world: Permission denied错误。

Kus*_*nda 5

要使脚本在不使用显式解释器(如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. 假设你umask022(一个常见的默认值),这将使它对所有用户都可以执行。


source您所做的步骤是无稽之谈,应该给您一条错误消息(您无法获取目录)。

如果您需要将 new 设置为PATH“永久”,则将该export PATH行添加到您的 shell 的启动文件中(~/.bashrc如果您bash用作交互式 shell)。


此外,避免在交互式 root 提示符下工作。使用非特权用户帐户进行测试和探索,并sudo在需要执行管理任务的少数情况下使用该帐户。