升级到新发行版本后,我的bash
脚本开始出现错误:
bash: /dev/stderr: Permission denied
在以前的版本中的Bash将在内部承认这些文件的名称(这就是为什么这个问题不是重复这一个),并做正确的事(TM) ,但是,这现在已经不再工作。如何才能成功再次运行脚本?
我尝试将运行脚本的用户添加到组中tty
,但这没有什么区别(即使注销并重新登录后也是如此)。
我可以在命令行上重现它,而不会出现问题:
$ echo test > /dev/stdout
bash: /dev/stdout: Permission denied
$ echo test > /dev/stderr
bash: /dev/stderr: Permission denied
$ ls -l /dev/stdout /dev/stderr
lrwxrwxrwx 1 root root 15 May 13 02:04 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 May 13 02:04 /dev/stdout -> /proc/self/fd/1
$ ls -lL /dev/stdout /dev/stderr
crw--w---- 1 username tty 136, 1 May 13 05:01 /dev/stderr
crw--w---- 1 username tty 136, 1 May 13 05:01 /dev/stdout
$ echo $BASH_VERSION
4.2.24(1)-release
在较旧的系统(Ubuntu 10.04)上:
$ echo $BASH_VERSION
4.1.5(1)-release
sudo su username2 -
... 模拟运行的
echo $BASH_VERSION
ls -l /dev/stdout /dev/stderr
和的输出是ls -lL /dev/stdout /dev/stderr
什么?