Questions along the lines of "is [such and such a word] offensive" are likely to attract opinion-based answers. What one person considers offensive, another might not. This is why content warnings exist, such as age ratings on movies, so that individuals can make a choice to see or hear content that others do not wish to.
Actually, the way in which movies are classified based on language is a very good barometer of what is generally considered to be offensive by the majority, or at least a significant number of people so as to be an indicator it isn't language for 'general' use.
The British Board for Film Classification (BBFC) have the following categories for bad language:
- 'very mild'
- 'mild'
- 'moderate'
- 'strong'
- 'very strong'
According to this resource, "shit" is considered to be 'mild' by the BBFC, which would restrict it from being used in a 'U'-rated filim (universal, or suitable for all). However it would be allowed in film rated 'PG' or '12/12A' (the US equivalent of PG-13), which suggests that most people would not want children younger than 12 to hear the word, although some parents may accept their children younger than that have already been exposed to it (hence the 'parental guidance' rating).
The BBFC also make a distinction between a word being used for emphasis and the same word being used "in a violent way". The latter is considered to be far worse, so context is important, too.
Most people would not use language that could be considered offensive by some in the workplace or in the company of people not well known to you, as you may not know how they personally feel about such words. For me, that rule of thumb would make 'bull shit' an expression to avoid in the workplace.