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
testrc
comecho
e 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.sh
e, 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 bash
ou 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.sh
para qualquer comandosource
ou.
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 .bashrc
está realmente vindo de.bashrc
- tente renomear.bashrc
(por exemplo, para.bashrc.hold
, ou o que for) e / ouchmod
ing para 0 e tente novamente.