ThG
ThG

Reputation: 2401

Avoid message "-​- Loading resources from .sqliterc"

Minor problem, nevertheless irritating : Is there a way to avoid the following message from appearing each time I make a query :

-- Loading resources from /Users/ThG/.sqliterc

Upvotes: 13

Views: 4115

Answers (7)

kazo
kazo

Reputation: 11

in the bash:
sqlite3 your_sqlite.db <<<'select * from your_table'

Upvotes: 0

Felix Dietze
Felix Dietze

Reputation: 690

When using sqlite in shell scripts, you usually don't even want your ~/.sqliterc to be loaded at all. This works well for me:

sqlite3 -init /dev/null

Explanation:

  • -init specifies the file to load instead of ~/.sqliterc.
  • /dev/null is a special file in Unix-like operating systems that discards all data written to it and provides no data when read.

Upvotes: 2

user1461607
user1461607

Reputation: 2760

A bit late but @levant pied almost had the solution, you need to pass an additional -interactive to silence the --loading resources from.

$ sqlite3 -batch -interactive
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .q

**EDIT January 2024

Another way to silence the loading message is to:

$ sqlite3 2>/dev/null
SQLite version 3.44.2 2023-11-24 11:41:44
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

Upvotes: 4

pegasuspect
pegasuspect

Reputation: 1031

You can simply rename your config file to disable the warning. And revert the rename to keep the configuration after use.

I use the following:

#suppress default configuration warnings
mv $HOME/.sqliterc $HOME/.backup.sqliterc 

# sqlite3 scripts...

#revert
mv $HOME/.backup.sqliterc $HOME/.sqliterc

Upvotes: 1

levant pied
levant pied

Reputation: 4481

As a stupid workaround, this works:

<. sqlite your_sqlite.db 'select * from your_table'

This is because the current code does this:

 if( stdin_is_interactive ){
   utf8_printf(stderr,"-- Loading resources from %s\n",sqliterc);
 }

Forcing a stdin redirect thwarts this due to this piece of code:

stdin_is_interactive = isatty(0);

This works as well:

sqlite -batch your_sqlite.db 'select * from your_table'

due to this piece of code:

}else if( strcmp(z,"-batch")==0 ){
  /* Need to check for batch mode here to so we can avoid printing
  ** informational messages (like from process_sqliterc) before
  ** we do the actual processing of arguments later in a second pass.
  */
  stdin_is_interactive = 0;
}

but it's longer, so kind of defeats the purpose.

Upvotes: 12

Walt
Walt

Reputation: 21

That resource msg comes out on stderr, and it's followed by a blank line, so you could get rid of it with something like this (wrapped up in a script file of its own):

#!/bin/bash
sqlite3 -init /your/init/file /your/sqlite3/file.db "
    your
    SQL
    cmds
" 2>/dev/null | sed -e1d

Upvotes: 2

lottscarson
lottscarson

Reputation: 588

I know that this question is PRETTY old now, but simply deleting '/Users/ThG/.sqliterc' should solve the problem. '.sqliterc' is a configuration file for sqlite's interactive command line front-end. If you don't spend a lot of time in there, you won't miss the file.

Upvotes: 3

Related Questions