왜 /etc/shells에 물고기를 추가할 수 없나요?

왜 /etc/shells에 물고기를 추가할 수 없나요?

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/shellsOSX에서는 분명히 이 질문에서 언급한 대로 파일에 추가해야 합니다 .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/shellsfish/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 ...이제 작동합니다.

인용하다

관련 정보