Como mencionei no meu comentário, os shells não interativos não devem ler .bashrc . Sua pergunta não deveria ser "Por que --norc não está funcionando?"; sua pergunta deve ser “Por que este script de shell (shell não interativo) está lendo .bashrc em primeiro lugar?”. Uma possibilidade é que você tenha uma variável de ambiente BASH_ENV definida como ~/.bashrc . Se não é isso, eu não sei, mas aqui estão algumas coisas que você pode tentar:
- Se o seu script não estiver fazendo nada
bash-específico, tente executá-lo comsh; ou seja,sh -x test.sh. - Crie um arquivo
testrccomechoe digabash -–rcfile testrc -x test.sh. - Diga
bash -–rcfile /dev/null -x test.sh. - Qualquer e todos os itens acima sem
-x. (Isso não deve fazer diferença, mas esse problema já não faz sentido.) - Execute o script como um programa normal:
chmod +x test.she, em seguida, apenastest.sh(ou./test.sh, se você não tiver.em seu caminho de pesquisa). (Você precisará ter#!/bin/bash,#!/bin/sh,#!/usr/bin/env bashou algo equivalente como a primeira linha detest.sh, mas essa é uma boa prática de qualquer maneira - veja discussão de Grawity .) (Mas isso também não deve fazer diferença.) - E realmente, você deve fazer isso primeiro, mas eu não queria incomodar você e fazer você ignorar o resto da minha resposta: certifique-se de que o problema é o que você diz ser. Verifique, verifique e verifique três vezes
test.shpara qualquer comandosourceou.que possa (talvez indiretamente) extrair.bashrc. Da mesma forma, veja se ele chama qualquer outro script que possa estar fazendo isso. Verifique se a mensagemin .bashrcestá realmente vindo de.bashrc- tente renomear.bashrc(por exemplo, para.bashrc.hold, ou o que for) e / ouchmoding para 0 e tente novamente.