Fish Shell을 사용해 보기로 결정했지만 일부 별칭을 사용하는 데 문제가 있습니다. 그래서 가장 쉬운 방법은 Fish 쉘 함수에서 bash 명령을 실행하는 것입니다. 이 같은:
function fish_function
start bash
... bash commands ...
stop bash
end
그게 가능합니까?
예: 명령
pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)
Fish Shell에서는 작동하지 않으며 변환하는 방법을 모르겠습니다.
답변1
확실히; and
물고기는 명령 대체 &&
에 사용됩니다 ()
.
따라서 명령을 다음으로 변경하십시오.
pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)
작동해야합니다.
실제 질문에 답하기 위해 일반적으로 bash
어떤 방법으로든 명령의 STDIN으로 리디렉션하여 Bash에서 실행될 명령문을 얻을 수 있습니다. 여기서는 문자열을 지원하는 Zsh를 사용하고 있으며 명령문은 Bash의 내용을 인쇄합니다. 특정 변수):
% <<<'echo $BASH' bash
/bin/bash
그러나 일반적으로 bash
s -c
옵션을 사용하는 것이 좋습니다. 예를 들어, 여기의 문자열과 파이프는 여러 명령을 잘 처리하지 못하고, 여기의 문서는 현재 셸에 의해 확장됩니다(단, 현재 셸의 지원이 필요함).
전반적으로 bash -c
항상 안전한 내기인 것 같습니다.
bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'
여러 명령의 경우 다음과 같습니다.
bash -c '
command1
command2
command3
'