如何解决将 tcsh 与用户帐户一起使用时,/bin/ 权限被拒绝
我正在尝试使用 tcsh shell 从 /home/username/working_directory 获取 .my_script:
source ./.my_script
我收到以下错误:
UK_PATH=/usr/local/dir_name/UKernel/5.0:.:/home/username:/usr/local/dir_name: Command not found.
export: Command not found.
UPRJDIR=/home/username/working_directory: Command not found.
export: Command not found.
/bin/.: Permission denied.
/bin/.: Permission denied.
我认为出现错误的脚本片段:
#!/bin/tcsh -f
#
#
### Script fragment:
set UK_REF = UKernel/5.0
setenv UKERNEL_ROOT /usr/local/dir_name/${UK_REF}
setenv UK_PATH ${UKERNEL_ROOT}:.:${HOME}:/usr/local/dir_name
set path = ($UKERNEL_ROOT/bin $path)
setenv UPRJDIR $cwd;
服务器正在运行 CentOS 6。当我使用 ADMIN 帐户时,它的来源没有任何错误。我尝试将我的用户帐户添加到与 ADMIN 相同的组中,但我仍然遇到相同的错误。 可以看出,引用了我的 ~HOME 目录的行中的错误。我尝试 sudo chmod 755 和 777 我的 ~HOME 目录和其中的所有目录或使用 sudo 执行脚本,但仍然出现此错误。
我想知道为什么我不能使用我的用户帐户获取我的脚本,即使权限似乎是正确的
解决方法
找到问题和解决方案:另一个脚本后来使用了这些变量,但它也在读取 $SHELL 并尝试使用用户的默认 shell 获取它们。所以我的用户帐户的默认 shell 是 bash 并且它给出了错误,因为它试图从 tcsh 脚本中使用 EXPORT 命令,但是 ADMIN 帐户使用 tcsh 作为默认 shell,所以它没有给出错误。
总而言之:检查您的脚本是否可能正在调用 $SHELL(用户的默认 shell,而不是当前 shell)变量来确定要使用哪些 shell 命令。如果需要,请更改您的用户帐户的默认 shell
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。