OSX에서 Fish 쉘을 기본 쉘로 사용하려고 합니다. Brew를 사용하여 피쉬 쉘을 설치했는데 이를 추가하려고 하면 /etc/shells
다음 오류가 발생합니다.
tee: /etc/shells: No such file or directory
이것은 내가 사용하는 명령줄입니다:
echo "usr/local/bin/fish" | sudo tee -a /etc/shells
원천:https://hackercodex.com/guide/install-fish-shell-mac-ubuntu/
나한테 무슨 문제라도 있는 걸까 $PATH
?
답변1
당신이하고있는 일은 잘못되었습니다. chsh
사용자의 쉘을 변경하려면 이 명령을 사용해야 합니다 .
$ chsh -s /usr/local/bin/fish
OSX
/etc/shells
OSX에서는 분명히 이 질문에서 언급한 대로 파일에 추가해야 합니다 .OS X는 Fish를 기본 셸로 설정하는 것을 거부합니다(Homebrew를 통해 설치됨) #989.
이렇게 하려면 다음 명령을 실행하여 다음 위치에 추가해야 합니다 /etc/shells
.
$ echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
그러면 파일은 다음과 같이 표시됩니다.
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash
/usr/local/bin/fish
위의 작업을 완료한 후 chsh -s ...
명령을 다시 시도하면 제대로 작동합니다.
왜?
문제는 fish
설치 방법과 관련된 것 같습니다. 을 사용하면 에 올바르게 추가될 brew install fish
가능성이 높습니다 . 다른 방법으로 설치한 경우 파일에 항목으로 추가되지 않을 수 있습니다 .fish
/etc/shells
fish
/etc/shells
사소한 문제
어떤 경우에는 권한 /etc
자체가 문제가 될 수도 있습니다.
$ ll /etc
lrwxr-xr-x@ 1 root wheel 11B Jan 26 2016 /etc -> private/etc
$ ll -d private/etc/
drwxr-xr-x 96 root wheel 3.2K Jul 12 18:53 private/etc/
이러한 권한은 허용되지만 그렇지 않은 경우 다음과 같이 수정할 수 있습니다.
$ sudo mount -uw /
$ sudo chmod a+x private/etc
위의 변경 사항을 적용하면 chsh -s ...
이제 작동합니다.